更新数据项
操作步骤
1.通过 tableName
或 tableId
实例化一个 Table
对象,操作该对象即相当于操作对应的数据表,这里推荐用 tableName
示例代码
参数说明
tableName
和 tableId
二选一
tableId
String
数据表的 Id
tableName
String
数据表名
2.通过数据行 id
(以下用 recordId
参数名表示) 设置指定数据行
3.为记录项赋值
有两种类型的赋值操作:
a.一次性赋值:
参数说明
record
Dictionary
记录信息,key 为字段名称
b.逐个赋值:
info 对同一字段进行多次
set
操作,后面的数据会覆盖掉前面的数据在通过
set(key:value:)
和set(record: )
设置数据时,value 支持的类型包括Int
、String
、Array
、Dictionary
等基本数据类型,同时也支持GeoPoint
、GeoPolygon
、User
、Record
。
c. unset 操作
将某个字段的值清空
4.将数据更新保存到服务器
参数说明
expand
[String]
options
[RecordOptionKey: Any]
N
返回结果
success
Bool
是否新增数据成功
error
NSError
info 若
success
为true
,本地记录实例record
的数据将被更新。
通过上面的四个步骤,即完成了一条记录的更新,具体操作阅读以下内容。
更新普通数据
更新日期时间 Date 类型的数据
更新 file 类型数据
更新 geojson 类型数据
更新 object 类型数据
对象内的属性名只能包含字母、数字和下划线,必须以字母开头,比如 {$ifanr.x: 123}
和 {知晓云: "test"}
是错误的。
示例
Book 表中的 publish_info 为 object 类型,表示出版商,其中有两个字段信息:name 表示出版商名称,location 为出版商地址。
更新 array 类型数据
更新 pointer 类型数据
计数器原子性更新
对数字类型的字段进行原子性增减操作。当请求同时对一个数据进行增减时,原子性使得冲突和覆盖导致的数据不正确的情况不会出现。
假如 Book
表有一个价钱字段 price
,通过原子性增加价钱:
参数说明
key
String
是
在数据表中的类型必须是 Number 或 Integer
value
Double
是
与 key 的类型保持一致
更新数据表里 Object 类型中某个字段是 Number 或 Integer 的数据:
例如现有 Book
表中类型为 Object 的字段 info,且具体内容为 {amount: 1}
数组原子性更新
将 待插入的数组 加到原数组末尾
假设 Book
表中有一个字段 recommender
,表示推荐者,类型是数组,可以有多个推荐者。假如数据表中 recommender
为 ["xiaohua", "xiaohong"]
,现增加一个推荐者:
此时,数据表的 recommender
值为 ["xiaohua", "xiaohong", "xiaoming"]
。
参数说明
key
String
是
在数据表中的类型必须是 Array
value
Array
是
将该数组的元素插入到数据表中
将 待插入的数组 中不包含在原数组的数据加到原数组末尾
假设 Book
表中有一个字段 recommender
,表示推荐者,类型是数组,可以有多个推荐者。假如数据表中 recommender
为 ["xiaohua", "xiaohong"]
,现增加两个推荐者:
此时,数据表的 recommender
值为 ["xiaohua", "xiaohong", "xiaoming"]
。
参数说明
key
String
是
在数据表中的类型必须是 Array
value
Array
是
将该数组的元素插入到数据表中
从原数组中删除指定的值
假设 Book
表中有一个字段 recommender
,表示推荐者,类型是数组,可以有多个推荐者。假如数据表中 recommender
为 ["xiaohua", "xiaohong"]
,现删除一个推荐者:
此时,数据表的 recommender
值为 ["xiaohua"]
。 参数说明
key
String
是
在数据表中的类型必须是 Array
value
Array
是
如果元素类型是 geojson、object、file,则只能是 length 为 1 的 Array
从原数组中删除最后一个元素
假设 Book
表中有一个字段 recommender
,表示推荐者,类型是数组,可以有多个推荐者。假如数据表中 recommender
为 ["xiaohua", "xiaohong"]
,现删除最后一个推荐者:
此时,数据表的 recommender
值为 ["xiaohua"]
。 参数说明
key
String
是
在数据表中的类型必须是 Array
从原数组中删除第一个元素
假设 Book
表中有一个字段 recommender
,表示推荐者,类型是数组,可以有多个推荐者。假如数据表中 recommender
为 ["xiaohua", "xiaohong"]
,现删除第一个推荐者:
此时,数据表的 recommender
值为 ["xiaohong"]
。 参数说明
key
String
是
在数据表中的类型必须是 Array
按条件批量更新数据项
可以通过设置自定义查询条件 Query
,将符合条件的数据进行批量更新操作,同时根据需要是否设置触发触发器。下面示例代码将价格小于 15
的书籍的价格加 1
。
注意:由于条件查询可能命中非常多的数据,默认情况下,限制为最多更新前
1000
条数据。 如需要一次性更新更多数据,请参考下一个小节:不触发触发器的更新,或者通过维护分页来进行。
其中:
实例代码
参数说明
record
Record
需要被更新的信息
Y
query
Query
设置扩展字段
N
options
[RecordOptionKey: Any]
N
返回结果
result
Dictionary
更新的数据结果
error
NSError
说明
error
为nil
不说明批量更新数据完全成功,仅代表服务端已收到并处理了这个请求,只有当返回的结果中operation_result
列表中不存在error
元素时,才可以认为所有数据均更新成功。
返回示例
返回参数
succeed
Int
成功创建记录数
total_count
Int
总的待创建记录数
offset
Int
与传入参数 offset
一致
limit
Int
与传入参数 limit
一致
next
String
下一页待更新记录地址,若值为 null
,表示已更新完成
operation_result
Int
批量写入每一条数据的结果
常见错误码
201
:成功写入400
:非法数据
Last updated
Was this helpful?