• 新增数据记录
    • SDK 1.1.0 及以上版本
      • 操作步骤
      • 添加普通数据
      • 添加时间类型的数据
      • 添加 file 类型数据
      • 添加 geojson 类型数据
      • 批量新增数据项
    • SDK 1.1.0 以下版本

    新增数据记录

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