数据表 - 新增数据项

优质
小牛编辑
135浏览
2023-12-01

{% 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)

参数说明

参数类型必填说明
tableIDNumber数据表 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 参数说明

参数类型必填说明
tableIDNumber数据表 ID
dataObject待插入的自定义数据

返回参数

参数类型描述
idString数据表 ID
created_atInteger创建时间
is_adminBoolean自定义字段
nameString自定义字段
priceNumber自定义字段
tagsArray自定义字段

请求示例

  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 %}