我是来自Java背景的Node.JS新手我使用express来构建这个Rest API。我想要做的是建立一个经理的概念。我正在寻找一种返回用户对象的优雅方式:
用户路由:user.js
router.get('/find/:email', function(req, res, next){
userWare.findUserByEmail(req, res, next)
});
middleware / manager:usermiddleware.js
module.exports = {
findUserByEmail: function(req, res, next) {
models.core_user.find({
where:{
email: req.params.email
}
}).then(function(user){
res.json(user)
}, function(err){
res.status(404).json(err);
});
},
}
所以在上面的函数中我想将用户对象返回到路径而不是json。这样我就可以从路径中的对象创建json。这个经理类的重点是fectch和return对象。
答案 0 :(得分:3)
您需要做的是使用您需要的数据调用回调函数或返回承诺。
<强>回调强>
user.js的
router.get('/find/:email', function (req, res, next) {
userWare.findUserByEmail(req.params.email, function (err, data) {
// error as first parameter or null if no error occurred
if (err) {
return res.status(404).json(err);
}
res.json(user);
});
});
usermiddleware.js
module.exports = {
findUserByEmail: function (email, next) {
models.core_user.find({
where: {
email: email
}
}).then(
function (user) {
// async call of callback with user object
next(null, user);
},
function (err) {
// async call of callback with error
next(err);
}
);
}
};
<强>无极强>
您也可以返回模型返回的承诺,然后它将如下所示:
user.js的
router.get('/find/:email', function (req, res, next) {
userWare.findUserByEmail(req.params.email).then(
function (user) {
res.json(user);
},
function (err) {
res.status(404).json(err)
}
);
});
usermiddleware.js
module.exports = {
findUserByEmail: function (email) {
// return the promise to the caller
return models.core_user.find({
where: {
email: email
}
});
}
};