猫鼬——部队集合名称

我正在尝试使用猫鼬来创建一个数据库,并在其中收集。我的代码是:

var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/testdb');
var Schema = mongoose.Schema;


var UserInfo = new Schema({
username : String,
password : String
});


mongoose.model('UserInfo', UserInfo);


var user = db.model('UserInfo');




var admin = new user();
admin.username = "sss";
admin.password = "ee";
admin.save();

当我运行这段代码时,猫鼬创建了一个名为 UserInfo 而不是 UserInfo 的集合。 如何在猫鼬中强制收集名称?

85811 次浏览

这个应该够了

var UserInfo = new Schema({
username : String,
password : String
}, { collection: 'userinfo' });

有关更多信息,请参见 Mongoose 文档中的 这个链接

如果您正在使用 monose 2.0.0,那么将 CollectionName 作为第三个参数传递

mongoose.model('UserInfo', UserInfo, 'UserInfo');

您需要在架构中设置集合名称。

new Schema({...},{collection: 'userInfo'});

Model 的 API 结构如下:

Mongoose#model(name, [schema], [collection], [skipInit])

当没有传递集合参数时,Mongoose 通过复数模型名称生成一个集合名称。如果不喜欢此行为,请传递集合名称或设置架构集合名称选项。

例如:

var schema = new Schema({ name: String }, { collection: 'actor' });

或者

schema.set('collection', 'actor');

或者

var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);

在默认情况下,Mongoose 会将“ s”添加到集合名称中。如果要避免这种情况,只需将集合的名称作为第三个参数传递:

var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/testdb');
var Schema = mongoose.Schema;


var UserInfo = new Schema({
username: String,
password: String
});


mongoose.model('UserInfo', UserInfo, 'UserInfo')


tan = new user();
admin.username = 'sss';
admin.password = 'ee';
admin.save();

我们建议使用 mongoose.model('UserInfo', UserInfo, 'UserInfo');,第三个参数是集合名。

您的模型名称: userInfo.js

在快速路由文件或 app.js 中

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/testdb');

然后在你的 userInfo.js 中

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserInfo = new Schema({
username : String,
password : String
});
module.exports = mongoose.model('UserInfo', UserInfo);

回答:

mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name

更好的语法解释:

Mongoose.model(name, [schema], [collection], [skipInit])

参数说明:

  • 第一个参数-名称模型名称
  • 第二个参数[模式]模式名
  • 第三个参数[ Collection ]集合名称(可选,从模型名称导出)
  • 第4个参数[ skipInit ]是否跳过初始化(默认为 false)

module.exports = mongoose.model('name', schema, 'collection')上传递第三个参数将覆盖基于模型名称的自动集合名称,该名称已得到回答。.但还有两种方法,

返回文章页面每只猫鼬译者: Https://mongoosejs.com/docs/api.html#mongoose_mongoose-model

有3种方法可以手动输入集合名称:

var schema = new Schema({ name: String }, { collection: 'actor' });


// or


schema.set('collection', 'actor');


// or


var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName)