在我的 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)
})
})
应该足够了。
添加回答
举报
0/150
提交
取消