如果它还没有在mongoDB中自动创建一个集合?

Pur*_*tke 9 collections schema mongoose mongodb

我正在使用mongoose为节点创建护照身份验证.我的数据库中没有任何名为"users"的集合.但是在使用下面的架构创建新用户时

var mongoose = require('mongoose');

 module.exports = mongoose.model('User',{
id: String,
username: String,
password: String,
email: String,
firstName: String,
lastName: String
});
Run Code Online (Sandbox Code Playgroud)

它会自动创建新的"用户"集合.这怎么可能?

vmr*_*vmr 12

在这里,mongoose将检查MongoDB中是否存在名为"Users"的集合,如果它不存在则会创建它.原因是,mongoose将's'附加到指定的模型名称.在这种情况下,"用户"并最终创建一个名为"用户"的新集合.如果您已将模型名称指定为"Person",那么如果不存在具有相同名称的集合,它将最终创建名为"Persons"的集合.

  • 但是我们如何限制这种自动创建集合.因为不想要它. (2认同)
  • 这就是猫鼬的工作方式,你不能限制它.请参阅此链接:http://mongoosejs.com/docs/guide.html (2认同)

Mrc*_*ief 5

Mongoose 将模型名称复数化,并默认将其用作集合名称。如果您不想要默认行为,您可以提供您自己的名称:

const UserModel = mongoose.model('User', new Schema({ ... }, { collection: 'User' }));
Run Code Online (Sandbox Code Playgroud)

参考: https: //mongoosejs.com/docs/guide.html#collection