我正在使用Dexie IndexedDB包装器,我正在尝试将一个对象添加到嵌套对象内部的现有数组中。结构类似于下面的
{
Name : 'John',
age : 33,
tags : {
skill: [{
first: '.NET',
second: 'JAVA',
third: [{special1:'sleep'},{special2:'eat'}]
}]
}
}
我尝试过很多方法来推送对象special3:'运行'技能。第三但没有成功。我的最后一次尝试看起来像这样
const pathObject = {};
const fullPath = 'result.tags.skill[3].third';
pathObject[fullPath] = {special3:'run'};
db.inspections.update(id, pathObject);
该对象被添加到外部而不是数组内部第三个'类似下面的内容
{
Name : 'John',
age : 33,
tags : {
skill: [{
first: '.NET',
second: 'JAVA',
third: [{special1:'sleep'},{special2:'eat'}]
}]
skill[3]: {
third: {special3:'run'}
}
}
}
我想知道是否有办法使用Dexie在嵌套对象中添加数组,如果没有办法使用indexeddb实现这一点。感谢帮助,因为问题阻碍了进展
答案 0 :(得分:3)
最简单的方法是使用带有回调函数的Collection.modify()来改变你的模型:
db.inspections.where('id').equals(id).modify(x =>
x.tags.skill[0].third.push({special3:'run'}) );
如果要使用包含数组项的键路径,也可以使用数字键将数组视为对象:
db.inspections.update(id, {"tags.skill.0.third.3": {special3:'run'}});