如何通过外键关联查询MongoDB集合并在Dust模板渲染作者名
解决方法
要实现通过Book的author_id获取对应作者姓名并在Dust模板中渲染,分两步操作:
1. 后端用Mongoose的populate关联查询数据
你的Book Schema已经定义了author_id的ref指向"Author",直接在查询书籍时用populate方法,就能把关联的作者数据一起查出来。
修改你的书籍查询代码,示例如下:
const Book = require('./path/to/bookModel'); // 查询所有书籍并关联对应作者数据 Book.find() .populate('author_id') // 指定要关联的字段,对应Book Schema里的author_id .exec((err, books) => { if (err) { console.error(err); return; } // 把包含作者信息的books对象传给Dust模板渲染 res.render('your-template-name', { books: books }); });
执行这个查询后,每个book对象里的author_id不再是单纯的ObjectId,而是包含_id和name的完整作者对象。
2. 调整Dust模板的渲染逻辑
现在模板里可以直接通过author_id.name获取作者姓名,修改模板代码如下:
{#books} <div class="large-4 small-12 columns book"> <div class="row img-row"> <img src="{.cover}" alt=""> </div> <div class="row"> <h3 class="small-12">{.title}</h3> <h4 class="small-5 columns ">作者:</h4> <h4 class="small-7 columns ">{.author_id.name}</h4> </div> <div class="row p-row"> <p class="small-12">{.description}</p> </div> </div> {/books}
内容的提问来源于stack exchange,提问作者Yazan Ali
相关产品推荐
相关产品推荐

