0

如何让 JSData 更新保存到 localStorage 的已修改对象?

下面的代码在一个容器对象中保存了一个带有两个苹果的 Tree 对象。现在更新该容器并将其保存为“混合到现有实例中”,如此处文档中所述

问:如何防止这种 mixin 行为,使对象在保存后只包含一个苹果?

普朗克

var adapter = new DSLocalStorageAdapter();
var store = new JSData.DS();
store.registerAdapter('localstorage', adapter, { default: true });

var Tree = store.defineResource('tree');

Tree.create({
  id: 1,
  apples: {1: 'one', 2: 'two'}
}).then(function(tree){
  tree.apples = {1: 'one'}
  tree.DSSave().then(function(tree){
    console.log(tree.apples) // 
  })
});
4

1 回答 1

0

您正在寻找该onConflict选项,默认为"merge".

这应该这样做:

tree.apples = {1: 'one', 2: null};
tree.DSSave({ onConflict: 'replace' })
  .then(function (tree){
    console.log(tree.apples);
  });

2.x: http: //www.js-data.io/v2.9/docs/dsdefaults#onconflict

3.x:http ://api.js-data.io/js-data/latest/Collection.html#onConflict

于 2016-08-23T18:25:54.957 回答