2

如果有一种方法可以为同一模型提供多个模式,我正在徘徊。在我的一个模块中,我有两个不同的模式试图访问同一个模型。但是当我这样做时:

@Module({
   imports: [
      MongooseModule.forFeature([
         {name: 'foo', schema: Schema1},
         {name: 'foo', schema: Schema2},
   ]), ......

我得到错误Cannot overwrite 'foo' model once compiled

这是我拥有的架构示例:

export class Schema1{
   type: { type: string, index: true, default: 'someValue'},
   data: {mapname: string}
}
export class Schema2{
   type: {type: string, index: true, default: 'anotherValue'}.
   data: {showStats: boolean, email: string}
}
4

1 回答 1

2

例如,在服务中使用模型时,它仅通过名称引用@InjectModel('foo'),因此必须是明确的。您不能定义两个具有相同名称的模型。

正如你所说,但是有可能有两个模型指向同一个集合,因为集合名称是一个可选参数,请参见源代码

static forFeature(
  models: { name: string; schema: any; collection?: string }[] = [],
  connectionName: string = DefaultDbConnectionToken,
)
于 2018-07-26T14:03:25.437 回答