我有一个在user_helper.js
中定义的函数,它通常返回值。
当我从胡子模板调用getUserInfo()
(user_helper.js
)时,它通常会返回一个字符串。但是当我想要猫鼬查询的结果时,它会返回 NULL,甚至没有显示任何错误。
索引.js
router.get("/home", (req, res) => {
Profile.find()
.then(profile => {
res.render("index", {
userID: req.session.userID,
helper: require("../helpers/user_helper")
});
})
.catch(err => {
res.status(400).send("Unable to fatch");
});
});
module.exports = router;
user_helpert.js
var users = {
getUserInfo: function() {
return function(userID, render) {
var query = {_id:userID};
User.findOne(query, function(error, user) {
// Inside, return nothing
if (error) {
return error;
} else {
return user;
}
});
return "Some Text"; //This one's return result
};
}
};
module.exports = users;
胡须模板
{{#helper.userInfo}}{{ userID }}{{/helper.userInfo}}
它应该从数据库返回用户信息。任何人都可以知道这个或任何更好的方法吗?
您的函数中存在许多问题。
第一个是query
变量在getUserInfo
函数中不存在。因此,无法执行User.findOne()
。
第二个错误是 User.findOne()
方法是异步的,因此无法按预期返回值。
您应该在index.js
中修改 /home 路由以检索用户:
router.get("/home", (req, res) => {
User.findOneById(req.session.userID)
.then(user => {
res.render("index", {
user: user
});
})
.catch(err => {
res.status(400).send("Unable to fetch");
});
});
在您的模板中:
{{user.id}}