{% import “/cloud-function/node-sdk/macro/total_count.md” as totalCount %}

删除数据项

删除单条数据:

BaaS.TableObject#delete(recordID, options)

删除多条数据:

BaaS.TableObject#delete(query, options)

参数说明

参数 类型 必填 说明
recordID string 记录 ID
query Query Query 查询条件对象

options(类型:Object,批量删除时需要设置),属性说明:

属性 类型 必填 默认 说明
enableTrigger boolean true 是否触发触发器
withCount boolean true 是否返回 total_count

{{totalCount.withCountTips()}}

操作步骤

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

let MyTableObject = new BaaS.TableObject(tableName)

参数说明

tableName 二选一,不能同时存在

参数名 类型 说明
tableName string 数据表名

2.指定数据行 id(以下用 recordID 参数名表示) 执行删除操作

MyTableObject.delete(recordID)

参数说明

参数 类型 必填 说明
recordID String 数据行 id

示例

请求示例 {% tabs deleteRecordAsync=”async/await”, deleteRecordPromise=”promise” %} {% content “deleteRecordAsync” %}

  1. // 删除 tableName 为 product 的数据表中数据行 id 为 '59897882ff650c0477f00485' 的数据项
  2. exports.main = async function deleteRecord() {
  3. try {
  4. let tableName = 'product'
  5. let recordID = '59897882ff650c0477f00485'
  6. let Product = new BaaS.TableObject(tableName)
  7. let res = await Product.delete(recordID)
  8. // success
  9. return res
  10. } catch(err) {
  11. // error
  12. throw err
  13. }
  14. }

{% content “deleteRecordPromise” %}

  1. // 删除 tableName 为 product 的数据表中数据行 id 为 '59897882ff650c0477f00485' 的数据项
  2. function deleteRecord() {
  3. let tableName = 'product'
  4. let recordID = '59897882ff650c0477f00485'
  5. let Product = new BaaS.TableObject(tableName)
  6. Product.delete(recordID).then(res => {
  7. // success
  8. callback(null, res)
  9. }).catch(err => {
  10. // error
  11. callback(err)
  12. })
  13. }

{% endtabs %}

返回示例

回调中的 res 对象结构如下:

  1. {
  2. "status": 204,
  3. "statusText": "No Content",
  4. "data": ""
  5. }

err 对象结构请参考错误码和 HError 对象

常见错误:

错误码 err.code 可能的原因
404 数据行不存在
403 没有权限删除数据

批量删除数据项

通过设置查询条件,将符合条件的数据进行批量删除操作。

其中:

请求示例 {% tabs deleteRecordsAsync=”async/await”, deleteRecordsPromise=”promise” %} {% content “deleteRecordsAsync” %}

  1. exports.main = async function deleteRecords() {
  2. try {
  3. let MyTableObject = new BaaS.TableObject(tableName)
  4. let query = new BaaS.Query()
  5. // 设置查询条件(比较、字符串包含、组合等)
  6. //...
  7. let res = await MyTableObject.limit(10).offset(0).delete(query)
  8. // success
  9. return res
  10. } catch(err) {
  11. // error
  12. throw err
  13. }
  14. }

{% content “deleteRecordsPromise” %}

  1. function deleteRecords() {
  2. let MyTableObject = new BaaS.TableObject(tableName)
  3. let query = new BaaS.Query()
  4. // 设置查询条件(比较、字符串包含、组合等)
  5. //...
  6. MyTableObject.limit(10).offset(0).delete(query).then(res => {
  7. // success
  8. callback(null, res)
  9. }).catch(err => {
  10. // error
  11. callback(err)
  12. })
  13. }

{% endtabs %}

返回示例

回调中的 res 对象结构如下:

  1. {
  2. "status": 200,
  3. "statusText": "OK",
  4. "data": {
  5. "succeed": 8, // 成功删除记录数
  6. "total_count": 10, // where 匹配的记录数,包括无权限操作记录
  7. "offset": 0,
  8. "limit": 10,
  9. "next": null // 下一次删除 url,若为 null 则表示全部删除完毕
  10. }
  11. }

err 对象结构请参考错误码和 HError 对象

常见错误:

错误码 err.code 可能的原因
404 数据行不存在
403 没有权限删除数据

批量删除时不触发触发器

批量删除不触发触发器的情况下会有以下的行为:

  • 当删除命中总条目 <= 1000 时,无论 limit 设置为多少,均为同步删除,将返回删除结果,详见下方返回示例中同步执行部分。
  • 当删除命中总条目 > 1000 时,根据设置 limit 的不同,将有下方两种行为:
    • limit <= 1000 时,操作记录为同步执行
    • limit > 1000 或未设置时,则会转为异步执行并移除 limit 限制,变成操作全部

{% tabs batchDeleteAsync=”async/await”, batchDeletePromise=”promise” %} {% content “batchDeleteAsync” %}

  1. exports.main = async function batchDelete() {
  2. try {
  3. let res = await MyTableObject.delete(query, {enableTrigger: false})
  4. console.log(res)
  5. // success
  6. return res
  7. } catch(err) {
  8. //err 为 HError 对象
  9. throw err
  10. }
  11. }

{% content “batchDeletePromise” %}

  1. // 知晓云后台设置的触发器将不会被触发
  2. function batchDelete() {
  3. MyTableObject.delete(query, {enableTrigger: false}).then(res => {
  4. console.log(res)
  5. callback(null, res)
  6. }).catch(err => {
  7. //err 为 HError 对象
  8. callback(err)
  9. })
  10. }

{% endtabs %}

返回示例

同步操作时,回调中的 res 对象结构如下:

  1. {
  2. "status": 200,
  3. "statusText": "OK",
  4. "data": {
  5. "succeed": 8, // 成功删除记录数
  6. "total_count": 10, // where 匹配的记录数,包括无权限操作记录
  7. "offset": 0,
  8. "limit": 10,
  9. "next": null // 下一次删除 url,若为 null 则表示全部删除完毕
  10. }
  11. }

异步操作时,回调中的 res 对象结构如下:

  1. {
  2. "status": 200,
  3. "statusText": "OK",
  4. "data": {
  5. "statys": "ok",
  6. "operation_id": 1 // 可以用来查询到最终执行的结果
  7. }
  8. }

info 获取异步执行结果,请查看接口文档