我目前具有以下架构:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const Comments = new Schema({
authorId: {
type: Schema.Types.ObjectId,
unique: false
},
commentBody: {
type: String
}
});
//Create schema
const GroupSchema = new Schema({
name:{
type: String,
required: true
},
comments: [Comments]
});
module.exports = Group = mongoose.model('group', GroupSchema);
我可以没有错误地插入第一组,但是一旦我尝试添加第二组,我就会收到此错误:
{
"error": {
"name": "MongoError",
"message": "E11000 duplicate key error collection: app-idiomas.groups index: comments.authorId_1 dup key: { : null }",
"driver": true,
"index": 0,
"code": 11000,
"errmsg": "E11000 duplicate key error collection: app-idiomas.groups index: comments.authorId_1 dup key: { : null }"
}
}
因此,正如我想的那样,问题出在“注释”模式上,并且我搜索了嵌套模式,以查看是否可以解决此问题。我尝试使用“默认”和“稀疏”属性,但没有成功。
最后,我决定进行测试并删除“注释”架构,并删除“组”架构中的“引用”,以确认一切正常。我擦除了所有数据库,并添加了第一组(现在没有任何comment属性),并且每当尝试添加第二组时仍然出现错误。我只是不知道为什么。
有帮助吗?
更新
这几天我没有时间,但最后我发现了问题所在。可能当我创建评论架构时,我可能已将authorId设置为唯一,因此,MongoDB为此属性创建了一个索引。我对MongoDB的了解不多,这就是为什么我以前没有检查过的原因。但是在这里,我找到了索引并将其删除:
答案 0 :(得分:0)
此问题必须与数据库中的记录有关。
但是正如您所说的,您清除了数据库,问题看起来很奇怪。
再次检查一下是否删除了正确的数据库,即您的api中正在使用的数据库。