为什么我们必须在猫鼬模型的末尾命名该系列



我不明白为什么我可以使用这个访问我的模型:

module.exports = function(mongoose) {
    var collection = 'news';
    var NewsSchema = new mongoose.Schema({
        type: String,
        content: String,
        img: String,
        date: {type: Date, default: Date.now }
    });
    return mongoose.model(collection, NewsSchema);
}

但是我必须指定名称集合才能访问此模型:

module.exports = function(mongoose) {
    var collection = 'console';
    var ConsoleSchema = new mongoose.Schema({
        value: String,
        label: String
    }, { collection: collection });
    return mongoose.model(collection, ConsoleSchema);
}

我使用

models.news.find({});
models.collection.find({});

我不明白这些技巧...

谢谢

这是因为 Mongoose 使用模型名称的小写复数版本作为基础集合的默认名称。

因此,'news'映射到'news'(因为它已经是复数),但'console'映射到'consoles',因此您需要使用架构上的collection选项显式设置集合名称。

您还可以使用第三个参数将集合名称设置为mongoose.model

return mongoose.model(collection, ConsoleSchema, collection);

最新更新