我是NestJS的新手。我敢肯定这是一个简单的问题,但是我找不到答案。
在nest docs中,建议每个模型有一个模块。这涉及使用MongooseModule.forFeature
创建模型:
imports: [MongooseModule.forFeature([{ name: 'Cat', schema: CatSchema }])]
文档说:
如果您还想在另一个模块中使用模型,请将MongooseModule添加到
exports
的{{1}}部分,然后在另一个模块中导入CatsModule
我的问题是如何在新模块中引用模型。
我可以看到:
CatsModule
创建的)mongoose.model('Name', MySchema)
完成此操作,但是感觉它重复了import { Model } from 'mongoose'; @InjectModel('name') myModel: Model<MyInterface>)
完成的模型创建,因为它再次将猫鼬模型与模式结合在一起< / li>
任何帮助表示赞赏!
答案 0 :(得分:0)
所以我认为方法3是正确的方法。
根据@silvelo的this comment,在注入模式(但不是模式本身)时,您必须分别提供集合名称和接口:
@Module({
imports: [
MongooseModule.forFeature([
{ name: GAME_COLLECTION_NAME, schema: GameSchema },
]),
],
controllers: [GamesController],
components: [GamesService],
exports: [GamesService, MongooseModule],
})
export class GamesModule implements NestModule {}
@Module({
imports: [
MongooseModule.forFeature([
{ name: USER_COLLECTION_NAME, schema: UserSchema },
]),
GamesModule,
LinksModule,
],
controllers: [UsersController],
components: [UsersService],
exports: [UsersService],
})
export class UsersModule implements NestModule {}
@Component()
export class UsersService {
constructor(
@InjectModel(GAME_COLLECTION_NAME) private readonly gameModel: Model<Game>,
@InjectModel(USER_COLLECTION_NAME) private readonly userModel: Model<User>,
) {}
}