node.js Express()bir sonraki
Express'in, bu gibi basit bir kod bloğu var:
app.get('/', function(req, res){
res.send('Hello World');
});
'/', Bu kod işlevi ger gönderiliyor ve res nesneler. istek üzerine
Kodu bazı diğer engeller, bir sonraki olmak 3. bir argüman gibi görünüyor()
Express belgelere çekti
app.get('/users/:id?', function(req, res, next){
var id = req.params.id;
if (id) {
// do something
} else {
next();
}
});
Bu nokta ne anlamıyorum() bir sonraki veya bir varlık neden kullanılır. Bu örnekte, eğer kimliği yok eğer doğru değilse, bir sonraki aslında ne yapıyor?
CEVAP
Bir sonraki kontrol geçereşleşenrota. Mesela verdiğiniz örnekte, id
verildi req.user
atamak eğer veritabanında kullanıcı aramak isteyebilirsiniz.
Aşağıda, bir yol gibi olabilir:
app.get('/users', function(req, res) {
// check for and maybe do something with req.user
});
/123 /kullanıcılar örnek rota ilk maç olacak bu yana, ilk kontrol edin ve 123
; /users
bunun sonucu ile bir şeyler yapabilir kullanıcı bulacaksınız.
Route middleware (NOT: 2'ye bağlayın.x belgelere, ama bu 3 çalışan olarak test edilmiştir.x) belirli bir URİ düzeni veya bir rota sipariş güveniyor olmadığından daha esnek ve güçlü bir araç olsa da, benim görüşüme göre, bir. Örnek bu şekilde gösterilen model meyilli, bir zaman uyumsuz findOne()
12 *model varsayarak olurdum:
function loadUser(req, res, next) {
if (req.params.userId) {
Users.findOne({ id: req.params.userId }, function(err, user) {
if (err) {
return next(new Error("Couldn't find user: " err));
}
req.user = user;
next();
});
} else {
next();
}
}
// ...
app.get('/user/:userId', loadUser, function(req, res) {
// do something with req.user
});
app.get('/users/:userId?', loadUser, function(req, res) {
// if req.user was set, it's because userId was specified (and we found the user).
});
// Pretend there's a "loadItem()" which operates similarly, but with itemId.
app.get('/item/:itemId/addTo/:userId', loadItem, loadUser, function(req, res) {
req.user.items.append(req.item.name);
});
Bu gibi akışını kontrol etmek için güçlü olmak çok kullanışlı. Bazı sayfalar sadece admin bayrağı kullanıcılar için kullanılabilir olmasını isteyebilirsiniz:
/**
* Only allows the page to be accessed if the user is an admin.
* Requires use of `loadUser` middleware.
*/
function requireAdmin(req, res, next) {
if (!req.user || !req.user.admin) {
return next(new Error("Permission denied."));
}
next();
}
app.get('/top/secret', loadUser, requireAdmin, function(req, res) {
res.send('blahblahblah');
});
Bu size bazı fikirler verdi umuyoruz.
Nasıl node.js güncelleme ve sonraki sü...
Node.js iki farklı statik dizinleri ku...
Node.js / Express.js - Nasıl uygulamay...
Nasıl seansları Node.js ile Express.js...
Nasıl Express/Node.js içinde bir İSTAS...