我正在尝试在Jaydata中编写一个简单的CRUD功能,我已经为更新操作编写了这个简单的代码:
SampleClass.prototype.Load = function(input1,callback)
{
var param='it.Name=="'+input1+'"';
this.data.items.filter(param).forEach(function(ii)
{
callback(ii);
});
this.data.items.saveChanges();
};
所以当我打电话时:
t.Load('Entry4',function(res){console.log(res.Name)})
它就像一个魅力!但是,如果我为回调调用更新操作,如:
t.Load('Entry4',function(res){res.Name="Entry5"})
它不会改变数据库中的任何内容。我在http://jaydata.org/examples/JayDataPro/ToDoList_complex中看到过类似beginTransaction函数的东西,但我无法理解它的本质。
答案 0 :(得分:3)
特别感谢Gabor Dolla
为了更新JayData中的值:
问题的解决方案是: 更改对象字段的定义后,如下所示:
Name{ type:'string', **key:true**}
您可以查询任何内容,但只能更改它们的非关键属性
t.Load('Entry4',function(res){res.LastName="Entry5";res.save()});
答案 1 :(得分:1)
我认为在修改实体之前只缺少 attach()。
this.data.items.attach(res);
顺便说一句,我会将saveChanges移动到更新回调中,因为在readonly场景中你不需要它。