mongoose – 力量集合名称
我正在尝试使用mongoose在其中创build一个数据库和一个集合。 我的代码是:
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();
当我运行这个代码时,mongoose创build了名为UserInfo的集合,而不是userinfo。 如何在mongoose强制收集名称?
这应该做到这一点
var UserInfo = new Schema({ username : String, password : String }, { collection: 'userinfo' });
如果您正在使用mongoose 2.0.0,请传递collectionName作为第三个参数
mongoose.model('UserInfo', UserInfo, 'UserInfo');
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();
您需要在架构中设置集合名称。
new Schema({...},{collection: 'userInfo'});
mongoose.model的API结构是这样的:
Mongoose#model(name, [schema], [collection], [skipInit])
什么mongoose做的是,当没有收集参数被传递时,Mongoose通过复制模型名称来产生一个集合名称。 如果您不喜欢这种行为,请传递集合名称或设置您的模式集合名称选项。
例:
var schema = new Schema({ name: String }, { collection: 'actor' });
要么
schema.set('collection', 'actor');
要么
var collectionName = 'actor' var M = mongoose.model('Actor', schema, collectionName);