新增数据记录

{% tabs first=”SDK 1.1.0 及以上版本”, second=”SDK 1.1.0 以下版本” %}

{% content “first” %}

SDK 1.1.0 及以上版本

操作步骤

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

let MyTableObject = new wx.BaaS.TableObject(tableID)

参数说明

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

info
SDK 1.2.0 版本已支持通过数据表名实例化 TableObject,如操作数据表名为 ‘product’ 的数据表,可进行如下实例化:new wx.BaaS.TableObject(‘product’)

2.本地创建一条空记录

let MyRecord = MyTableObject.create()

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

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

添加普通数据

请求示例

  1. // 向 tableID 为 10 的数据表插入一条记录
  2. let tableID = 10
  3. let Product = new wx.BaaS.TableObject(tableID)
  4. let product = Product.create()
  5. // 设置方式一
  6. let apple = {
  7. name: 'apple',
  8. price: 1,
  9. desc: ['good'],
  10. amount: 0
  11. }
  12. product.set(apple).save().then(res => {
  13. // success
  14. }, err => {
  15. // err
  16. })
  17. // 设置方式二
  18. product.set('name', 'apple')
  19. product.set('price', 1)
  20. product.set('desc', ['good'])
  21. product.set('amount', 0)
  22. product.save().then(res => {}, err => {})

返回示例 (res.statusCode === 201)

res.data:

  1. {
  2. "_id": "59a3c2b5afb7766a5ec6e84e",
  3. "amount": 0,
  4. "created_at": 1503904437,
  5. "created_by": 36395395,
  6. "desc": ["good"],
  7. "id": "59a3c2b5afb7766a5ec6e84e",
  8. "name": "apple",
  9. "price": 1.0,
  10. "read_perm": ["user:*"],
  11. "updated_at": 1503904437,
  12. "write_perm": ["user:*"]
  13. }

添加时间类型的数据

数据表允许添加时间类型的列,为该类型的记录赋值,需要使用 ISO 格式的字符串,如 Product 表定义一个时间类型的列 expiration_time,创建一条记录时,该字段的赋值操作如下:

  1. let isoStr = ((new Date()).toISOString()).toString()
  2. product.set('expiration_time', isoStr)

添加 file 类型数据

使用 SDK 1.1.2 及以上版本,操作如下:

  1. let MyFile = new wx.BaaS.File() // 具体操作查看「文件操作」章节
  2. MyFile.upload(params).then(res => {
  3. product.set('manual', res.data.file)
  4. product.save()
  5. })

使用 SDK 1.1.2 以下版本,操作如下:

  1. wx.BaaS.uploadFile(params).then(res => {
  2. let data = JSON.parse(res.data)
  3. product.set('manual', data.file)
  4. product.save()
  5. })

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

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

添加 geojson 类型数据

查看 地理位置操作 章节

批量新增数据项

SDK 1.4.0 及以上版本支持批量新增数据项。

请求示例

  1. let MyTableObject = new wx.BaaS.TableObject(tableID)
  2. const records = [
  3. {
  4. name: 'apple',
  5. price: 1,
  6. desc: ['good'],
  7. amount: 0
  8. }, {
  9. name: 'banana',
  10. price: 2,
  11. desc: ['good'],
  12. amount: 1
  13. }
  14. ]
  15. MyTableObject.createMany(records).then(res => {}, err => {})

返回示例

res.data:

  1. {
  2. "succeed": 10, // 成功插入记录数
  3. "total_count": 10, // 总的待插入记录数
  4. }

状态码说明

201 创建成功,400 请求数据非法或超过最大操作条目数上限

注: 由于对数据表的增删改均会触发 trigger 动作,为了防止出现严重消耗系统资源的情况,对数据表进行批量操作的数据条目最多不能超过 1000 条。

{% content “second” %}

SDK 1.1.0 以下版本

info
该写法在 sdk v2.0 前仍然有效

wx.BaaS.createRecord(OBJECT)

OBJECT 参数说明

参数 类型 必填 说明
tableID Number 数据表 ID
data Object 待插入的自定义数据

返回参数

参数 类型 描述
id String 数据表 ID
created_at Integer 创建时间
is_admin Boolean 自定义字段
name String 自定义字段
price Number 自定义字段
tags Array 自定义字段

请求示例

  1. // 向 tableID 为 10 的数据表插入一条记录
  2. let tableID = 10
  3. let data = {
  4. "is_admin": false,
  5. "name": "OSfvvQFoNm",
  6. "price": 99,
  7. "tags": ["LRpq", "HGLa"]
  8. }
  9. let objects = {
  10. tableID,
  11. data
  12. }
  13. wx.BaaS.createRecord(objects).then(res => {
  14. // success
  15. }, err => {
  16. // err
  17. })

返回示例

  1. {
  2. "created_at": 1487053095,
  3. "id": "7",
  4. "is_admin": false,
  5. "name": "OSfvvQFoNm",
  6. "price": 99,
  7. "tags": ["LRpq", "HGLa"]
  8. }

info
插入的数据要与预先在知晓云平台设定的数据类型一致

{% endtabs %}