更新数据项

操作步骤

1.通过 tableID 实例化一个 TableObject 对象,操作该对象即相当于操作对应的数据表

let MyTableObject = new BaaS.TableObject(tableID)

参数说明

参数 类型 必填 说明
tableID Number 数据表 ID

2.通过 recordID 设置指定记录

let MyRecord = MyTableObject.getWithoutData(recordID)

参数说明

参数 类型 必填 说明
recordID String 记录 ID

3.修改指定记录的数据

MyRecord.set(data)

该方法支持两种类型的赋值操作:

a.一次性赋值:

  1. MyRecord.set({
  2. key1: value1,
  3. key2: value2
  4. })

b.逐个赋值

  1. MyRecord.set(key1, value1)
  2. MyRecord.set(key2, value2)

info
对同一字段进行多次 set 操作,后面的数据会覆盖掉前面的数据

4.将修改后的记录保存到服务器

MyRecord.update()

通过上面的四个步骤,即完成了一条记录的插入,具体操作阅读以下内容。

普通数据更新

请求示例

  1. // 更新 tableID 为 10 的数据表中 recordID 为 59897882ff650c0477f00485 的数据项的 price 字段
  2. let tableID = 10
  3. let recordID = '59897882ff650c0477f00485'
  4. let Product = new BaaS.TableObject(tableID)
  5. let product = Product.getWithoutData(recordID)
  6. product.set('price', 11)
  7. product.update().then(res => {
  8. // success
  9. }, err => {
  10. // err
  11. })

返回示例

  1. {
  2. "created_at": 1487053095,
  3. "id": "7",
  4. "name": "fushi",
  5. "price": 11,
  6. "desc": ["sweet", "red"],
  7. amount: 2
  8. }

计数器原子性更新

对数字类型的字段进行原子性增减操作。当请求同时对一个数据进行增减时,原子性使得冲突和覆盖导致的数据不正确的情况不会出现。

product.incrementBy(key, value)

参数说明

参数 类型 必填 说明
key String 在数据表中的类型必须是 Number 或 Integer
value Number 或 Integer 与 key 的类型保持一致

请求示例

  1. product.incrementBy('amount', 1)
  2. product.update().then(res => {}, err => {})

数组原子性更新

待插入的数组 加到原数组末尾

product.append(key, value)

参数说明

参数 类型 必填 说明
key String 在数据表中的类型必须是 Array
value Array 或 Array item -

请求示例

  1. product.append('desc', ['big'])
  2. // or
  3. product.append('desc, 'big')

待插入的数组 中不包含在原数组的数据加到原数组末尾

product.uAppend(key, value)

参数说明

参数 类型 必填 说明
key String 在数据表中的类型必须是 Array
value Array 或 Array item -

请求示例

  1. product.uAppend('desc', ['sweet'])
  2. // or
  3. product.uAppend('desc, 'sweet')

从原数组中删除指定的值

product.remove(key, value)

参数说明

参数 类型 必填 说明
key String 在数据表中的类型必须是 Array
value Array 或 Array item -

请求示例

  1. product.remove('desc', ['sweet'])
  2. // or
  3. product.remove('desc', 'sweet')

info
同一字段设置多次 appendremove 操作后进行 update 操作,则只有最后一次进行的 appendremove 是有效的;如果同时对同一字段进行 setremoveappend 操作,则只有最后执行的操作是有效的。

注: 设置的数据要与预先在知晓云平台设定的数据类型一致,当仅更新一个字段,并且数据不合法时,将无法成功保存,请求返回 Failed to save record, type conflict on fields 错误,如果更新多个字段,其中有一个或一个以上字段数据合法,则请求成功,但其中数据不合法的字段将不会成功保存,如下示例:

  1. /*
  2. * 同时设置 amount 和 date 字段,其中 date 为日期类型,这里为其赋了一个字符串类型的值,
  3. * 该请求会返回 200,但只有 amount 被成功设置为 10
  4. */
  5. let order = Order.getWithoutData(orderID)
  6. order.set('amount', 10)
  7. order.set('date', 'abc')
  8. order.update()