mongodb mongoose不允许我使用camelCase集合名称

oknwwptz  于 2023-05-06  发布在  Go
关注(0)|答案(3)|浏览(147)

下面是我的代码:

const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost:27017/miniRDS", {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
}, (err) => {
    if(!err){
        console.log("Connected")
    }else{
        console.log("Couldn't connect!");
    }
});

const tests = new mongoose.Schema({
    subject: {
        type: String,
        required: true,
        default: "ict"
    },
    date: {
        type: String,
        required: true,
        default: "01-01-2021"
    }
});

const testsModel = mongoose.model("classTests", tests);
const s = new testsModel({
    subject: "english",
    date: "12-01-2021"
});

s.save();

我使用的是Mongoose版本5.11.11。当我尝试使用mongoose模型创建一个以camelCase命名的集合时,我遇到了困难。
在上面的代码中,它应该创建一个名为“classTests”的集合,而不是创建“classtests”。我怎样才能实现“classTests”?谢谢

1u4esq0p

1u4esq0p1#

您可以将其用作:

module.exports = mongoose.model("user_notification_preference", NotificationPreference, "userNotificationPreferences");

三个参数:(要用作camel的名称,schema,实际名称)

dojqjjoe

dojqjjoe2#

Mongoose会自动查找模型名称的复数小写版本,请检查此documentation,因此您无法在mongoose中使用camelCase创建集合

js4nwp54

js4nwp543#

解决方案:

为了解决这个问题,我们可以在collection字段中使用复数名称

const mongoose = require('mongoose');
const AssessmentAttemptSchema = new mongoose.Schema({
    userId: {
        type: mongoose.Types.ObjectId,
        required: true,
    },
    verificationToken: {
        type: String,
        required: true,
        unique: true,
    },
}, {
    timestamps: true,
    collection: 'assessmentAttempts',
});

module.exports = mongoose.model('AssessmentAttempt', AssessmentAttemptSchema);

因此,在本例中,我们使用assessmentAttempts将集合名称保存为CamelCase。
最终结果:Mongo DB : Sample Collection
MongoDB集合名称限制文档:参考链接

相关问题