如何在Express.js应用程序中将猫鼬模型与正确的MongoDB集合相关联?

时间:2018-12-24 08:25:52

标签: node.js express mongoose mongoose-schema

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

不适用

discount.expiry.setDate(Date.now() + 1);

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

3 个答案:

答案 0 :(得分:1)

通常,我们遵循在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); 

答案 1 :(得分:0)

如果您要使用特定模型的文档,请使用mongoose.model('person', personSchema, collection)

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

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

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

答案 2 :(得分:0)

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

var personSchema = new Schema({  名称:字符串,  年龄:数字 }, {   收藏:“人民” });

mongoose.model( 'person', personSchema, 'people' ),因此您将其称为人员,但是集合名称将为人员