Javascript MongoDB和Nest.js:定义集合的自定义名称

Javascript MongoDB和Nest.js:定义集合的自定义名称,javascript,mongodb,collections,nestjs,Javascript,Mongodb,Collections,Nestjs,我有这样一个模式: @Schema() export class Pais extends Document { @Prop( raw({ codigo: { type: String, index: true, unique: true }, }), ) @Prop() descripcion: string; } export const PaisSc

我有这样一个模式:

    @Schema()
    export class Pais extends Document {
      @Prop(
        raw({
          codigo: { type: String, index: true, unique: true },
        }),
      )
      @Prop()
      descripcion: string;
    }
    
    export const PaisSchema = SchemaFactory.createForClass(Pais);
    
    PaisSchema.plugin(uniqueValidator, { message: `{PATH} debe ser único` });
默认情况下,nest.js会在类名中添加一个“s”,因此集合的名称应该是“paiss”,但我希望名称是“paisse”

在模块上,我尝试了以下方法:

    @Module({
      imports: [
        MongooseModule.forFeature([{ name: 'paises', schema: PaisSchema }]),
      ],

但它不起作用。我怎样才能解决这个问题呢?

首先。如果您已经创建了一个集合,并希望将其从复数名称重命名为单个名称,则可能需要检查以下答案:通过mongo shell或本机JS驱动程序

如果您想定义自己的模式名称,并避免使用这个
复数形式的
集合表单,请尝试使用driver。它允许您定义自己的模式/模型,并根据需要准确命名。要实现这一点,请使用下面的代码段:

let schema = new mongoose.Schema({
    _id: {
        type: String,
    },
    other_field: String
},{
    /** Schema options*/
    timestamps: true
});

let model_db = mongoose.model('collection_name', schema, 'collection');

但是!始终确保您的集合名称不会损坏任何名称。

我找到了一个解决方案,只需像这样设置@Schema()装饰器

@Schema({ collection: 'paises' })

这回答了你的问题吗?我想用decorators的方法来利用nestjs的功能,不过我已经做到了,谢谢。