我有以下路由器
router.get(“ / users /:id / messages”,middleware.isLoggedIn,函数(req,res){
//通过id查找用户
Message.find({},function(err,message){
如果(错误){
console.log(err);
}其他{
User.findById(req.params.id,function(err,user){
如果(错误){
console.log(err);
}其他{
res.render(“ messages / new_convo”,{
用户:用户,
讯息:讯息
});
}
});
}
});
});
呈现以下页面的我在这段代码中贯穿了每条消息,并将其保存到数组中
<%var messages = []; %>
<%message.forEach(function(message){%>
<%messages.push(message)%>
<%});%>
然后我定义了一个接受参数并在数组中找到匹配项的函数
<%function findMatches(wordToMatch,消息){%>
<%返回messages.filter(message => {%>
<%const regex = new RegExp(wordToMatch,'gi'); %>
<%返回message.text.match(regex)|| message.receiver.username.match(regex); %>
<%}); %>
<%}; %>
然后我成功运行以下命令,输出所需结果。
<%console.log(findMatches('dugi',消息))%>
现在,显然我可以将所有内容都放入脚本标签中,但是那样我将无法访问 messages
数组变量。
为了混合javascript和ejs,我尝试了以下操作:
<%});%>
这是 messages
数组的样子:
[{发件人:{id:5c2cadd1a858f325f4501e1c,用户名:'dugi'},
接收者:{id:5c3242956e5bc94f4469cb96,用户名:'mike'},
_id:5c3514b19b359a69642d81e0,
文字:“ Hello”,
createdAt:2019-01-08T21:22:57.825Z,
更新时间:2019-01-08T21:22:58.221Z,
__v:0}]
[{发件人:{id:5c2cadd1a858f325f4501e1c,用户名:'dugi'},
接收者:{id:5c3242956e5bc94f4469cb96,用户名:'mike'},
_id:5c3514b19b359a69642d81e0,
文字:“ Hello”,
createdAt:2019-01-08T21:22:57.825Z,
更新时间:2019-01-08T21:22:58.221Z,
__v:0},
{发件人:{id:5c2cadd1a858f325f4501e1c,用户名:'dugi'},
接收者:{id:5c324232079e5e46b4c3a473,用户名:'olly'},
_id:5c3514c09b359a69642d81e2,
文字:“你好吗”,
createdAt:2019-01-08T21:23:12.626Z,
更新时间:2019-01-08T21:23:12.630Z,
__v:0}]
[{发件人:{id:5c2cadd1a858f325f4501e1c,用户名:'dugi'},
接收者:{id:5c3242956e5bc94f4469cb96,用户名:'mike'},
_id:5c3514b19b359a69642d81e0,
文字:“ Hello”,
createdAt:2019-01-08T21:22:57.825Z,
更新时间:2019-01-08T21:22:58.221Z,
__v:0}]