MongoDB и Nest. js: Определите собственное имя для коллекции - PullRequest
1 голос
/ 03 августа 2020

У меня есть такая схема:

    @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' для коллекции, но я хочу имя должно быть «paises».

В модуле я пробовал это:

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

, но это не сработало. Как я могу решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Я нашел решение, просто нужно было установить декоратор @Schema () вот так

@Schema({ collection: 'paises' })
0 голосов
/ 03 августа 2020

Прежде всего. Если вы уже создали коллекцию и хотите переименовать ее из множественного числа в единственное, вы можете проверить этот ответ: Как я могу переименовать коллекцию в MongoDB? через оболочку mon go или переименование коллекции с помощью mongoDB для собственного JS драйвера.

Если вы хотите определить собственное имя схемы и избежать этой формы pluralizing коллекции, попробуйте использовать Mon goose драйвер. Это позволяет вам определить вашу собственную схему / модель и назвать ее так, как вы хотите. Для этого используйте фрагмент ниже:

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

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

Но! Всегда следите за тем, чтобы имя вашей коллекции не нарушало ограничения имен MongoDB .

...