为了账号安全,请及时绑定邮箱和手机立即绑定

在 ejs 中使用 .then 和辅助函数返回 [ object Promise ]

在 ejs 中使用 .then 和辅助函数返回 [ object Promise ]

紫衣仙女 2023-09-07 14:37:41
在我的 ejs 文件中,我在另一个文件中调用返回 mysql 结果的辅助函数。问题是即使我使用 .then(),返回值也是 [ object Promise ]。我不确定为什么。辅助函数    var conn = require("../routeFunctions/mySqlConn");//get the amount of likesvar getLikesCountEjs = function(idOfPost) {    var query = getLikeCount(idOfPost).q;    var preparedStatement = getLikeCount(idOfPost).ps;    return new Promise(function (resolve, reject) {      conn.query(query, preparedStatement, function (err, result, fields) {         if (err) {            reject("problem getting likes count");          } else {            resolve(result[0].count);          }      });    });  }  //get all likes count  function getLikeCount(idOfPost) {    var query = "SELECT COUNT(*) as count FROM likes where idOfPost = ?";    var preparedStatement = [parseInt(idOfPost)];    return { ps: preparedStatement, q: query };  }  //you can return multiple functions   module.exports = { getLikesCountEjs : getLikesCountEjs };我在其中调用函数的 ejs 文件    <a href="#" class="link-black text-sm interactSetLikesTimeLine" id = "setLikes-<%=posts.id%>">    <i class="far fa-thumbs-up mr-1 initalLoadSetLikes"> Likes <%= asyncFunctions.getLikesCountEjs(posts.id).then(function(result){ console.log(result); }) %> </i>   </a>
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您不能async与 EJS 一起使用

这些async方法应该在nodeJS后端完成,所以你有类似的东西:

app.get('...', async (req, res) => {

  res.render('...', {

    data: await asyncFunctions.getLikesCountEjs(posts.id)

  })

})

应该足够了。


查看完整回答
反对 回复 2023-09-07
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信