rav*_*avi 109 mongoose mongodb
我正在尝试使用mongoose来创建数据库和集合.我的代码是:
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();
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,mongoose创建了名为UserInfo而不是userinfo的集合.如何在mongoose中强制收集名称?
Tho*_*aum 180
这应该做到这一点
var UserInfo = new Schema({
username : String,
password : String
}, { collection: 'userinfo' });
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Mongoose文档中的此链接.
Bil*_*ain 76
如果您使用的是mongoose 2.0.0,请将collectionName作为第三个参数传递
mongoose.model('UserInfo', UserInfo, 'UserInfo');
Run Code Online (Sandbox Code Playgroud)
小智 20
默认情况下,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();
Run Code Online (Sandbox Code Playgroud)
Sim*_*ran 11
mongoose.model的API结构是这样的:
Mongoose#model(name, [schema], [collection], [skipInit])
Run Code Online (Sandbox Code Playgroud)
mongoose做的是,当没有传递集合参数时,Mongoose通过复制模型名称来生成集合名称.如果您不喜欢此行为,请传递集合名称或设置模式集合名称选项.
例:
var schema = new Schema({ name: String }, { collection: 'actor' });
Run Code Online (Sandbox Code Playgroud)
要么
schema.set('collection', 'actor');
Run Code Online (Sandbox Code Playgroud)
要么
var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);
Run Code Online (Sandbox Code Playgroud)
小智 8
传递第三个参数会module.exports = mongoose.model('name', schema, 'collection')覆盖基于模型名称的自动集合名称,这已经被回答了..但是还有其他两种方法,
每个 mongoose.model doco 链接: 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)
Run Code Online (Sandbox Code Playgroud)
小智 5
回答:
mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name
Run Code Online (Sandbox Code Playgroud)
更好的语法解释:
Mongoose.model(name, [schema], [collection], [skipInit])
Run Code Online (Sandbox Code Playgroud)
参数说明:
| 归档时间: |
|
| 查看次数: |
51490 次 |
| 最近记录: |