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
相关产品推荐
相关产品推荐

