Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对Jaydata执行更新和删除操作_Javascript_Jaydata - Fatal编程技术网

Javascript 对Jaydata执行更新和删除操作

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

我试图在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"})

它不会改变数据库中的任何内容。我见过类似于中的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();})