更新和删除Jaydata上的操作

时间:2013-05-03 06:10:32

标签: 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.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函数的东西,但我无法理解它的本质。

2 个答案:

答案 0 :(得分:3)

特别感谢Gabor Dolla

为了更新JayData中的值:

  • 数据库必须包含主键
  • 更改非键属性
  • 之后调用异步save()函数。

问题的解决方案是: 更改对象字段的定义后,如下所示:

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场景中你不需要它。