我有一个在user_helper.js
中定义的函数,该函数通常返回值。
当我从 mustache 模板调用getUserInfo()
(在user_helper.js
中)时,通常会返回一个字符串。但是当我想要猫鼬查询的结果时,它返回NULL甚至不显示任何错误。
index.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}}
它应该从数据库返回用户信息。 任何人都可以知道这种方法或更好的方法吗?
答案 0 :(得分:0)
您的功能有很多问题。
第一个是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}}