【问题标题】:How to associate a mongoose model with the right MongoDB collection in Express.js app?如何在 Express.js 应用程序中将猫鼬模型与正确的 MongoDB 集合相关联?
【发布时间】:2019-05-23 11:19:00
【问题描述】:

如何在 express js 应用程序中使用 mongoose ORM 指向 mongodb 中的特定集合。

不适用

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var personSchema = new Schema({
 name: String,
 age: Number
});

module.exports = mongoose.model('person', personSchema);

考虑我的 mongo 数据库有多个集合,那么我上面的代码将如何指向特定的集合。

【问题讨论】:

  • 标题只能包含直接问题,格式化代码

标签: node.js express mongoose mongoose-schema


【解决方案1】:

非常抱歉,我选择的答案不准确。我无法删除它,因为它已被接受。您的问题的准确答案是,mongoose.model('person', personSchema); 将自动创建模型名称的复数小写版本。在这种情况下,如果集合 persons 不存在,它将自动在 mongoDB 中创建。 如果你想覆盖这个默认行为,你可以这样做:

var personSchema = new Schema({ 名称:字符串, 年龄:数字 }, { 集合:'人' });

mongoose.model( 'person', personSchema, 'people' ) 所以你把它称为人,但集合名称将是人

【讨论】:

    【解决方案2】:

    通常我们遵循在 mongoDB 中命名集合复数的约定。例如在 MongoDB 中,我们创建 users 表,但在 Node.js 中使用单数。所以出口将是:

    module.exports = mongoose.model('users',UserSchema)
    

    在其他脚本中,我们要求它如下: const User=require('<pathToModel>/user')

    这意味着我们将模型称为User,它基于UserSchema,与之关联的集合是users

    在您的代码中,您可以这样做:

    module.exports = mongoose.model('person', personSchema); 
    

    【讨论】:

      【解决方案3】:

      如果您有一个特定的集合,您希望基于特定模型的文档进入,您可以使用mongoose.model('person', personSchema, collection)

      或者,您可以在 Schema 定义中命名所需的关联集合:

      var dataSchema = new Schema({..}, { collection: 'data' });

      https://mongoosejs.com/docs/guide.html

      【讨论】:

        猜你喜欢
        • 2011-11-04
        • 2023-01-20
        • 2021-05-11
        • 2021-05-16
        • 2021-11-06
        • 2013-08-10
        • 2023-03-09
        • 2014-09-25
        • 1970-01-01
        相关资源
        最近更新 更多