4

我正在尝试在 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 函数的东西,但我无法理解它的本质。

4

2 回答 2

3

特别感谢 Gabor Dolla

为了更新 JayData 中的值:

  • DB 里面必须有一个主键
  • 更改非关键属性
  • 在它之后调用异步 save() 函数。

问题的解决方案是:像这样更改对象字段的定义后:

Name{ type:'string', **key:true**}

您可以查询任何内容,但只能更改它们的非关键属性

t.Load('Entry4',function(res){res.LastName="Entry5";res.save()});
于 2013-05-03T11:54:35.133 回答
1

我认为在修改实体之前只有attach()丢失。

this.data.items.attach(res);

顺便说一句,我会将 saveChanges 移动到更新回调,因为在只读场景中不需要它。

于 2013-05-03T06:22:53.447 回答