问题是我在运行此代码后,在Windows上检查带有Robomongo的db记录后,我看到只创建了一个名为'maximas'的集合,其中包含两条记录, 如果我从代码中删除Model2,创建后的结果将是相同的,但必须是集合'maxima'。
代码中是否有我看不到的错误,或者这个词是保留的,有什么想法吗?
代码,
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mymodels', (e)=>{
if(e) throw e;
});
var schema = new mongoose.Schema({
text: {type: String}
});
var Model1 = mongoose.model('maxima', schema);
var Model2 = mongoose.model('maximas', schema);
var newData1 = new Model1({
text: 'test'
});
var newData2 = new Model2({
text: 'test'
});
newData1.save((e)=>{
if(e) throw e;
console.log('Saved');
});
newData2.save((e)=>{
if(e) throw e;
console.log('Saved');
});
答案 0 :(得分:0)
Mongoose会自动将您的模型名称复数为集合名称。这就是为什么它们都是相同的,因为第二个集合名称已经是复数形式。
您可以将所需的集合名称作为第三个模型参数传递:
var Model1 = mongoose.model('maxima', schema, 'maxima');
var Model2 = mongoose.model('maximas', schema, 'maximas');
注意:您还可以在集群中指定集合名称作为选项:
var schema = new mongoose.Schema({
text: { type: String }
}, {
collection: 'maxima'
});
...但在这种情况下,您需要第二个模式,因此上面的第一种方法更适合。