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

在我的 ejs 文件中,我在另一个文件中调用返回 mysql 结果的辅助函数。问题是即使我使用 .then(),返回值也是 [ object Promise ]。我不确定为什么。


辅助函数


    var conn = require("../routeFunctions/mySqlConn");



//get the amount of likes

var 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>


紫衣仙女
浏览 79回答 1
1回答

鸿蒙传说

您不能async与 EJS 一起使用这些async方法应该在nodeJS后端完成,所以你有类似的东西:app.get('...', async (req, res) => {  res.render('...', {    data: await asyncFunctions.getLikesCountEjs(posts.id)  })})应该足够了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript