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

MongoDB Mongoose如何获取关联集合字段而非返回ObjectID

解决方案

核心原因是你当前查询Book文档时没有关联填充(populate)对应的Author集合数据,所以返回的author字段只有ObjectID,按以下步骤修改即可:

  • 第一步:修正后端Schema语法错误,在查询Book列表的接口中使用populate填充作者信息
// 修正后的Schema定义
const BookSchema = new mongoose.Schema({
  title: String,
  pages: Number,
  description: String,
  author: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' }
})
const Book = mongoose.model('Book', BookSchema)

const AuthorSchema = new mongoose.Schema({
  name: String,
  age: Number,
  countryBorn: String
})
const Author = mongoose.model('Author', AuthorSchema)
// Book列表查询逻辑示例,填充author字段的name属性
const bookList = await Book.find().populate('author', 'name')
// 此时返回给前端的author字段为包含name的对象,而非单纯的ObjectID
  • 第二步:修正前端渲染代码的语法错误,读取author的name属性展示
function Book(book){
  // 修正解构写法、description拼写错误
  const { title, pages, description, author } = book; 
  return (
    <>
      <h1>{title}</h1>
      <p>{pages} , {description}</p>
      {/* 可选链写法可以避免无作者时的渲染报错 */}
      <p>{author?.name || '暂无作者'}</p> 
    </>
  );
}

内容的提问来源于stack exchange,提问作者Zana Shu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 03:15:04