如何在NestJS MongoDB中通过Ref双向关联实现数据填充?
求助:Mongoose填充bookId时出现「schema hasn't registered」错误
我是一名新手,已被困20天。我的相关文件包括:
- app.module.ts
- user.schema.ts
- book.schema.ts
- user.service.ts
尝试在user.schema.ts中填充bookId时,出现「schema hasn't registered」错误。
解决步骤:
核对ref名称一致性
确认user.schema.ts中ref属性的值,和book.schema.ts中定义模型时的名称完全匹配。比如如果Book模型是mongoose.model('Book', BookSchema),那ref必须写'Book',大小写不能出错。调整模型注册顺序
在NestJS中,确保Book模型的注册优先级高于User模型。可以在AppModule中先导入BooksModule,再导入UsersModule;或者在UserModule的imports数组中加入BooksModule,保证BookSchema先被注册。强制触发Book模型注册
在user.schema.ts文件顶部直接导入Book模型或BookSchema文件,比如:
import '../book/book.schema'; // 或者导入Book模型 import { Book } from '../book/book.model';
- 检查模块配置
确认MongooseModule.forFeature的配置顺序,先注册Book模型再注册User模型:
MongooseModule.forFeature([ { name: 'Book', schema: BookSchema }, { name: 'User', schema: UserSchema }, ])
内容的提问来源于stack exchange,提问作者Parash Ukheda
相关产品推荐
相关产品推荐

