有关配置文件路由的问题,为什么我们有两种方法可能会做同样的事情:User.findOne和User.findById?还有router.param和router.get的执行顺序是什么?
router.param('username', function(req, res, next, username){
User.findOne({username: username}).then(function(user){
if(!user) { return res.sendStatus(404); }
req.profile = user;
return next();
}).catch(next);
});
router.get('/:username', auth.optional, function(req, res, next){
if(req.payload){
User.findById(req.payload.id).then(function(user){
if(!user) { return res.json({profile: req.profile.toProfileJSONFor(false)}); }
return res.json({profile: req.profile.toProfileJSONFor(user)});
});
} else {
return res.json({profile: req.profile.toProfileJSONFor(false)});
}
});
答案 0 :(得分:0)
非常简单地说:
FindOne查询数据库以匹配自定义标识符,而findById查询数据库以匹配唯一标识符。
同样在Express中,您定义的路线按照定义的顺序依次匹配。