Node.js 我如何编写一个助手函数,它是来自mongodb的查询,然后可以为任何ejs模板调用这个函数

Node.js 我如何编写一个助手函数,它是来自mongodb的查询,然后可以为任何ejs模板调用这个函数,node.js,mongodb,express,mongodb-query,ejs,Node.js,Mongodb,Express,Mongodb Query,Ejs,我想编写一个带有一个参数id的函数,让这个mongo传递到我的home.ejs 此查询的示例: db.getCollection('users').find('5da85558886aee13e4e7f044',{image:1}) 我有一条路线 routes/users.js 所以在home.ejs或任何文件.ejs 我可以像getUserimage('5da85558886aee13e4e7f044')一样调用id列表的内部循环 视图/home.ejs 当我console.log时,它给出了

我想编写一个带有一个参数
id
的函数,让这个mongo传递到我的
home.ejs

此查询的示例:

db.getCollection('users').find('5da85558886aee13e4e7f044',{image:1})

我有一条路线

routes/users.js 所以在
home.ejs
或任何
文件.ejs
我可以像
getUserimage('5da85558886aee13e4e7f044')一样调用
id列表的内部循环

视图/home.ejs
当我
console.log
时,它给出了正确的结果。但是当我像这样调用view.ejs
文件时,它会给我
[objectpromise]
创建一个文件,我们将其命名为helper.js

module.exports.getUserimage = async function(id){

    //do something
    //replace this with your own code but use the await
    let result = await collection.findOne(query);
    return result; //or whatever you wanna return 


}
然后在app.js中,您可以执行此操作

const helper = require("helper");

app.locals.getUserimage = helper.getUserimage
然后可以像现在这样在.ejs模板中调用它

 <% layout('layout/layout') %>
 //more code
 <% for(var i=0; i < userList.length; i++){ %>
    <div>
    <img src ="<%= getUserimage(userList[i].id)%>" > <%=userList[i].name%> 
    </div>
 <% } %>
 //more code

//更多代码
" >  
//更多代码

app.locals属性会在应用程序的整个生命周期中保持不变。请提供helper.js文件的完整路径。我假设该文件与app.js文件位于同一目录中。

我可以创建单独的文件吗?以及如何包含,请指导我更多信息?我已经进行了编辑。这将按照您的要求进行。我是usi的问题ng来自mongodb示例getUserimage(id){User.find(对象(id),{image:1.\u id:0})的getUserimage查询,在这种情况下我们如何传递异步函数。进行了另一次编辑。但是,为什么不返回一个字符串数组,其中包含指向userimage的路径,就像发送用户列表一样。因为在性能方面没有区别。从模板调用方法本质上仍然意味着您正在对服务器端。我在调用模板ejs时看到此
[对象承诺]
,请帮助检查我的更新代码。
module.exports.getUserimage = async function(id){

    //do something
    //replace this with your own code but use the await
    let result = await collection.findOne(query);
    return result; //or whatever you wanna return 


}
const helper = require("helper");

app.locals.getUserimage = helper.getUserimage
 <% layout('layout/layout') %>
 //more code
 <% for(var i=0; i < userList.length; i++){ %>
    <div>
    <img src ="<%= getUserimage(userList[i].id)%>" > <%=userList[i].name%> 
    </div>
 <% } %>
 //more code