我正在使用expressjs和猫鼬。我需要将一个函数传递给我的页面,以便可以通过id动态地从数据库中获取数据。目前我只返回[object Promise]
。
(在路线内)
const posts = await PostsModel.find();
res.render('page', {
posts: posts,
meta: async function(id){
try{
const result = await Model.findOne({id: id});
return result;
} catch(err){
console.log(err.message);
}
}
})
在mongo数据库中,有2个集合用于“帖子”,另一个集合用于“元”。目的是在ID中的“帖子”中找到一个条目,然后从“元”集合中按ID调用匹配的条目。
(即使用玉石渲染)
each post in posts
span #{meta(post.meta.id).name}
如何正确解决此问题?
答案 0 :(得分:0)
使用mongo凝聚。
let query = [
{
$lookup: {
from: "<meta collection>"
localfield: "_id",
foreignField: "id",
as: "metas"
}
}
];
const posts = await PostModel.aggregate(query);
for (const post of posts) {
// Do something with post.metas
// for example, iterate them
}
_id
是Post集合的主键。 id
是Metas集合的外键字段。