You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过外键关联查询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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:01:11