Javascript 对Jaydata执行更新和删除操作
我试图在Jaydata中编写一个简单的CRUD功能,我为更新操作编写了以下简单代码:Javascript 对Jaydata执行更新和删除操作,javascript,jaydata,Javascript,Jaydata,我试图在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.saveChan
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"})
它不会改变数据库中的任何内容。我见过类似于中的beginTransaction函数,但我无法理解它的本质。我认为在修改实体之前,只缺少了attach()
this.data.items.attach(res);
顺便说一句,我会将saveChanges移动到更新回调,因为在只读场景中不需要它。特别感谢Gabor Dolla 要更新JayData中的值,请执行以下操作:
- DB内部必须有一个主键
- 更改非关键属性
- 在它之后调用异步save()函数
Name{ type:'string', **key:true**}
您可以查询任何内容,但只能更改它们的非关键属性
t.Load('Entry4',function(res){res.LastName="Entry5";res.save()});
请澄清:您不能使用this和res,它们不是一起定义的。我使用了t.data.items.attach(res);在更改结果之前和之后,我还尝试创建一个临时变量并附加它。没用的,嗨这是一件棘手的事情,你并不真的需要它,所以你最好避免它。正如Robesz告诉您的,您需要在开始更改属性之前附加,以便JayData可以跟踪更改。另一种解决方案是使用我们的另一个api,因此将第二个回调函数更改为:t.Load('Entry4',function(res){res.Name=“Entry5”;res.save();})