我可以从胡须模板内部调用一个接受参数的函数吗?



我有一个在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}}

最新更新