收藏
回答

应该doc.update的一个严重bug吗?

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 工具 wx0c1cef74a336bdec 2.6.6

小程序端调用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了)




最后一次编辑于  2019-06-21
回答关注问题邀请回答
收藏

3 个回答

  • Cheshire cat
    Cheshire cat
    2019-06-21

    doc()里的传参是怎样写的呢,我试过doc('')应该是更新不了任何文档的

    2019-06-21
    有用
    回复 5
    • 老张
      老张
      2019-06-21

      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)的值。就出了这样的错。


      2019-06-21
      回复
    • Cheshire cat
      Cheshire cat
      2019-06-21回复老张

      我刚自己试了doc(undefined),发现没有文档被更新额,你看下doc里参数打印出来是undefined吗


      2019-06-21
      回复
    • 老张
      老张
      2019-06-21回复Cheshire cat

      看我补充的原文,BUG可复现。

      2019-06-21
      回复
    • Cheshire cat
      Cheshire cat
      2019-06-21回复老张


      这里的data: doc , doc里面把_id去掉吧,_id是不能被更新的

      2019-06-21
      回复
    • 老张
      老张
      2019-06-21回复Cheshire cat

      我的注释是:本句出错,无法更新已经说明了。

      2019-06-21
      回复
  • 铭锋科技
    铭锋科技
    2019-06-21

    你可以先判断_id,再决定是否更新

    2019-06-21
    有用
    回复 1
    • 老张
      老张
      2019-06-21

      你的意思,这不bug吗?这个api本来就应该这样的?

      2019-06-21
      回复
  • 敖癸
    敖癸
    2019-06-21

    可怕。。。

    2019-06-21
    有用
    回复 1
    • 老张
      老张
      2019-06-21

      是啊,下在头疼怎么恢复数据呢。

      2019-06-21
      回复
登录 后发表内容