• 更新数据项
    • 操作步骤
    • 普通数据更新
    • 计数器原子性更新
    • 数组原子性更新
      • 待插入的数组 加到原数组末尾
      • 待插入的数组 中不包含在原数组的数据加到原数组末尾
      • 从原数组中删除指定的值

    更新数据项

    操作步骤

    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()