1. 程式人生 > >update之微信小程式BUG

update之微信小程式BUG

今天在趕著一個專案,突然發現小程式之中使用update不行。資料不能更新
這就是我的程式碼:

const db = wx.cloud.database()
    const _ = db.command
    // 1、首先看xxx集合裡面有沒有存在這個人
    db.collection('xxx').where({
      shId: res.currentTarget.dataset.xinxi._openid
    }).get({
      success: function(e) {
        // 2、沒有的話add一個使用者
        if (e.data.length == 0) {
          db.collection('jifen').add({
            data: {
              ~~~~~~~~~~~~~~~
            },
            // 新增成功、然後修改稽核裡面的東西
            success(al) {
              db.collection(xxx).where({
              ~~~~~~~~~~~~~~~~~~
              }).update({
                data: {
                  ~~~
                },
                // 失敗的話,直接showToast/成功跳轉到原頁面
                success(value2) {
                  if (value2.stats.updated == 0) {
                 ~~~
                  } else {
                    ~~~
                  }
                }
              })
            }
          })
          //3、存在這個使用者,直接去更新裡面的資料 
        } else {
        ~~~
    })

結果當然是更新不了資料呀~

以下看了官網只有自己的理解:
where適用於對於集合的更新,對於單條資料並沒有作用
所以做出了一下修改

const db = wx.cloud.database()
    const _ = db.command
    // 1、首先看xxx集合裡面有沒有存在這個人
    db.collection('xxx').where({
      shId: res.currentTarget.dataset.xinxi._openid
    }).get({
      success: function(e) {
        // 2、沒有的話add一個使用者
        if (e.data.length == 0) {
          db.collection('jifen').add({
            data: {
              ~~~~~~~~~~~~~~~
            },
            // 新增成功、然後修改稽核裡面的東西
            success(al) {
              db.collection(xxx).doc(_id).update({
                data: {
                  ~~~
                },
                // 失敗的話,直接showToast/成功跳轉到原頁面
                success(value2) {
                  if (value2.stats.updated == 0) {
                 ~~~
                  } else {
                    ~~~
                  }
                }
              })
            }
          })
          //3、存在這個使用者,直接去更新裡面的資料 
        } else {
        ~~~
    })

解析

db.collection('todos').doc('todo-identifiant-aleatoire').update({
  // data 傳入需要區域性更新的資料
  data: {
    // 表示將 done 欄位置為 true
    done: true
  },
  success(res) {
    console.log(res.data)
  }
})

問題成功解決,資料修改成功