我看到Mongoose非常不寻常。我正在使用v4.8.1。
我有一个名为Gate的模式,它有一个名为histGate
的属性。我想以以下格式保存数据:
histGate:{
'4':
{
gateName: 'G1'
},
'5':
{
gateName: 'G5'
}
},
...
...
因此histGate
将具有属性'4','5','7',并且值将是对象。
我的Mongoose Schema是:
histGate: {
type: {
"gateName": {type: String
}
}
我可以将属性保存到histGate一次,当我签入Mongo时,我看到:
'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
的{{1}}具有'4'和'5'属性。然而,当我查看Mongo数据库时,它没有,它只有'4'属性。当我查询时,它只有'4'属性。
因此,Mongoose告诉我一切都很好,花花公子,它已经拯救了,但实际上并没有。这是怎么回事?我的架构错了吗?
修改
如果我编辑一个字符串属性,它就可以了。如果我编辑属于对象的属性,它就可以工作。当我编辑包含嵌套对象的属性时,它不起作用
修改
使用mongoose和mongo看起来这个架构是不可能的,它必须是一个数组
修改
看起来你可以拥有动态密钥,例如创建mongoose文档时,“4”,“5”等,但您无法编辑或添加更多文档。完全莫名其妙。
答案 0 :(得分:1)
问题详述here。
修正:
var width;
var height;
html2canvas($('#tablename'), {
onrendered: function(canvas) {
var imgData = canvas.toDataURL(
'image/png');
var doc = new jsPDF('l', 'mm',"a4");
doc.addImage(imgData, 'PNG', 11, 11,width,height);
doc.save('tabelle.pdf');
}
});}
保存之前。