Mongoose将同一模型动态保存到多个集合

Mongoose将同一模型动态保存到多个集合,mongoose,nestjs,Mongoose,Nestjs,是否可以将mongoose注入模型保存到多个集合?(nestjs指令) 我在找像这样的东西 injectedMode.collection('collectionA').save(data); injectedMode.collection('collectionB').save(data); 有时我需要将模型保存到一个集合,有时保存到另一个集合。 请记住,模型是注入的,在我的情况下,我希望每个客户都有一个集合。因此,同一个模型需要动态地保存到特定的集合中 感谢NestJS允许您访问本机,本机

是否可以将mongoose注入模型保存到多个集合?(nestjs指令)

我在找像这样的东西

injectedMode.collection('collectionA').save(data);
injectedMode.collection('collectionB').save(data);
有时我需要将模型保存到一个集合,有时保存到另一个集合。
请记住,模型是注入的,在我的情况下,我希望每个客户都有一个集合。因此,同一个模型需要动态地保存到特定的集合中


感谢

NestJS允许您访问本机,本机反过来提供对连接的
db
-对象的访问,因此您可以创建以下服务:

@Injectable()
export class DynamicMongoDbService {
  constructor (@InjectConnection() private connection: Connection) {
  }

  async insert(collectionName: string, data: any) {
    return this.connection.db.collection(collectionName).insert(data);
  }
}
然后相应地使用此服务:

this.dynamicMongoDbService.insert('collectionA', data);
this.dynamicMongoDbService.insert('collectionB', data);

编辑:

如果模型在编译时已知,您还可以创建一个服务,该服务将注入所有必需的模型并将它们存储在映射中。然后,在使用该服务时,您可以动态决定从哪个模型中选择并委托给它:

@Injectable()
export class DynamicMongoDbService {

  private modelMap: Record<string, Model<any>>;

  constructor (
    @InjectModel(Cat.name) catModel: Model<Cat>,
    @InjectModel(Dog.name) dogModel: Model<Dog>) {
    this.modelMap = {
      [Cat.name]: catModel,
      [Dog.name]: dogModel
    };
  }

  async insertDynamically<M, T> (modelType: typeof M, data: T) {
    const model = this.modelMap[modelType.name];
    return model.save(data);
  }
}

通过这样做,我是否失去了注入模型的能力,以及强大类型功能和API的所有好处,不是吗?我还能用这个模型吗?。那么查询呢?非常感谢。这是真的,也许还有另一种方法——我会考虑:)编辑答案,你觉得这个主意怎么样?很好,但问题是我需要每个客户收集一个(每个客户都有一个孤立的云)。因此,我可能不得不:
customerA:Model
——在编译时还不知道。。。谢谢你的帮助。
this.dynamicMongoDbService.insert(Cat, data);
this.dynamicMongoDbService.insert(Dog, data);