删除数据项
删除单条数据:
BaaS.TableObject#delete(recordID, options)
删除多条数据:
BaaS.TableObject#delete(query, options)
参数说明
options(类型:Object,批量删除时需要设置),属性说明:
{{totalCount.withCountTips()}}
操作步骤
1.通过 数据表名
实例化一个 TableObject
对象,操作该对象即相当于操作对应的数据表
let MyTableObject = new BaaS.TableObject(tableName)
参数说明
tableName 二选一,不能同时存在
2.指定数据行 id(以下用 recordID
参数名表示) 执行删除操作
MyTableObject.delete(recordID)
参数说明
示例
请求示例
Copy // 删除 tableName 为 product 的数据表中数据行 id 为 '59897882ff650c0477f00485' 的数据项
exports.main = async function deleteRecord() {
try {
let tableName = 'product'
let recordID = '59897882ff650c0477f00485'
let Product = new BaaS.TableObject(tableName)
let res = await Product.delete(recordID)
// success
return res
} catch(err) {
// error
throw err
}
}
Copy // 删除 tableName 为 product 的数据表中数据行 id 为 '59897882ff650c0477f00485' 的数据项
function deleteRecord() {
let tableName = 'product'
let recordID = '59897882ff650c0477f00485'
let Product = new BaaS.TableObject(tableName)
Product.delete(recordID).then(res => {
// success
callback(null, res)
}).catch(err => {
// error
callback(err)
})
}
返回示例
回调中的 res 对象结构如下:
Copy {
"status": 204,
"statusText": "No Content",
"data": ""
}
err 对象结构请参考错误码和 HError 对象
常见错误:
批量删除数据项
通过设置查询条件,将符合条件的数据进行批量删除操作。
其中:
limit
和 offset
的使用请查看 分页和排序 章节
请求示例
Copy exports.main = async function deleteRecords() {
try {
let MyTableObject = new BaaS.TableObject(tableName)
let query = new BaaS.Query()
// 设置查询条件(比较、字符串包含、组合等)
//...
let res = await MyTableObject.limit(10).offset(0).delete(query)
// success
return res
} catch(err) {
// error
throw err
}
}
Copy function deleteRecords() {
let MyTableObject = new BaaS.TableObject(tableName)
let query = new BaaS.Query()
// 设置查询条件(比较、字符串包含、组合等)
//...
MyTableObject.limit(10).offset(0).delete(query).then(res => {
// success
callback(null, res)
}).catch(err => {
// error
callback(err)
})
}
返回示例
回调中的 res 对象结构如下:
Copy {
"status": 200,
"statusText": "OK",
"data": {
"succeed": 8, // 成功删除记录数
"total_count": 10, // where 匹配的记录数,包括无权限操作记录
"offset": 0,
"limit": 10,
"next": null // 下一次删除 url,若为 null 则表示全部删除完毕
}
}
err 对象结构请参考错误码和 HError 对象
常见错误:
批量删除时不触发触发器
批量删除不触发触发器的情况下会有以下的行为:
当删除命中总条目 <= 1000 时,无论 limit 设置为多少,均为同步删除,将返回删除结果,详见下方返回示例中同步执行部分。
当删除命中总条目 > 1000 时,根据设置 limit 的不同,将有下方两种行为:
limit <= 1000 时,操作记录为同步执行
limit > 1000 或未设置时,则会转为异步执行并移除 limit 限制,变成操作全部
Copy exports.main = async function batchDelete() {
try {
let res = await MyTableObject.delete(query, {enableTrigger: false})
console.log(res)
// success
return res
} catch(err) {
//err 为 HError 对象
throw err
}
}
Copy // 知晓云后台设置的触发器将不会被触发
function batchDelete() {
MyTableObject.delete(query, {enableTrigger: false}).then(res => {
console.log(res)
callback(null, res)
}).catch(err => {
//err 为 HError 对象
callback(err)
})
}
返回示例
同步操作时,回调中的 res 对象结构如下:
Copy {
"status": 200,
"statusText": "OK",
"data": {
"succeed": 8, // 成功删除记录数
"total_count": 10, // where 匹配的记录数,包括无权限操作记录
"offset": 0,
"limit": 10,
"next": null // 下一次删除 url,若为 null 则表示全部删除完毕
}
}
异步操作时,回调中的 res 对象结构如下:
Copy {
"status": 200,
"statusText": "OK",
"data": {
"status": "ok",
"operation_id": 1 // 可以用来查询到最终执行的结果
}
}
info 获取异步执行结果,请查看接口文档