小程序端调用doc(_id).update,当_id是空undefined的时候,会把本人的所有doc全部update。
这是bug吗?我期望的是这种误操作时,应该不做任何update。
情况是这样的,代码如下:
ctt={
_id:'123456',
...
}
delete ctt._id
db.collection('ctt').doc(ctt._id).update({date:ctt})
原句基本是这样。
之所以delete ctt._id,因为上一次出错是因为整个ctt里包含_id,不能update,所以我下意识地delete这个值,结果忘了判断doc(ctt._id)的值。就出了这样的错。
用以下代码验证,复现了这种情况:
onLoad: function (options) {
//第一步开始添加两条doc
const db = wx.cloud.database()
db.collection(‘test’).doc(‘123456’).set({ data: { a: 1, b: 2, } })
db.collection(‘test’).doc(‘1234567’).set({ data: { a: 3, b: 4, } })
//第二步增加运行以下代码后
let doc = {_id: ‘12345678’,a:5}
db.collection(‘test’).doc(doc._id).update({ data: doc })//本句出错,带_id无法更新
//第三步注释掉第二的代码,运行以下代码
let doc = {_id: ‘123456789’,a: 6}
delete doc._id //增加了这一行
// console.log(doc_id) 无法log出来,会出错
db.collection(‘test’).doc(doc._id).update({ data: doc }).then(res => {
console.log(res)
})
},
我就是在这种情况下将现有所有doc都update掉的,还没法恢复,这样的bug,可以向微信索赔吗?
验证过程中,如果注释掉第二步,不停地运行这些代码,发现第三步运行的结果很诡异,有时更新一条,有时全部更新。(这样更说明这是bug了)