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的功能,不过我已经做到了,谢谢。