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

时间:2015-04-19 12:07:27

标签: node.js model mongoose schema

我无法理解为什么我可以使用它来访问我的模型:

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({});

我不明白这些技巧......

由于

1 个答案:

答案 0 :(得分:0)

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

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

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

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