0
我看到了与猫鼬非常不寻常的东西。我使用v4.8.1。保存在Mongoose中的嵌套对象不工作,但尚未通过验证
我有一个叫做Gate的模式,它有一个名为histGate
的属性。我想将数据保存的格式为:
histGate:{
'4':
{
gateName: 'G1'
},
'5':
{
gateName: 'G5'
}
},
...
...
所以histGate
将有物业“4”,“5”,“7”和值将是对象。
我的猫鼬架构是:
histGate: {
type: {
"gateName": {type: String
}
}
我还能再救一个属性histGate一次,当我在蒙戈检查我看到:
'4':
{
gateName: 'G1',
},
然而,然后我试图挽救另一个属性:
return Gate.findById(gateId)
.then(function(gateDb){
gateDb.histGate['5'] = gate;
return gateDb.save()
.then(function(gateDb){
console.log('saved and gateDb is ', gateDb);
return gateDb;
})
.catch(function(err){
console.log('err is ', err);
throw err;
});
})
.catch(function(err){
console.log('err is ', err);
throw err;
});
它告诉我它已经保存。 gateDb
有histGate
具有“4”和“5”属性。然而,当我看着Mongo数据库时,它并没有,它只有'4'属性。当我查询时,它只有'4'属性。
所以猫鼬告诉我一切都很好,并且它已经保存了,但实际上并没有。这是怎么回事?我的模式错了吗?
编辑
如果我编辑一个属性,它是一个字符串,它的工作原理。如果我编辑属性是一个对象,它的工作原理。当我编辑包含嵌套对象的属性,它不工作
编辑
它看起来像这样的架构心不是可能与猫鼬和蒙戈,它必须是一个数组
编辑
看起来你可以拥有动态密钥,例如'4','5'等创建一个猫鼬文档时,但你不能编辑或添加更多。完全莫名其妙。