收藏
回答

为何在判断语句中填写云数据库添加无论判断是否成功都会运行?

图中的三个输出分别是:

1、更新成功

2、getornot变量值

3、添加成功

我需要的目的是如果云数据库不存在我的openid的信息,则进行添加,如果存在就更新那一条而不添加新的

回答关注问题邀请回答
收藏

1 个回答

  • 驰子
    驰子
    2020-05-13

    原文:https://developers.weixin.qq.com/community/develop/article/doc/0006480c8505a898895ad652f51813

    如果这个表里只存用户信息,其实可以考虑使用set最简单。

      db.collection('user').doc(openid).set({
        data: userInfo
      }).then(e => {
        console.log('用户数据更新成功', e)
      })
    

    如果你还是要实现,存在更新,不存在插入,可以参考这个。

      db.collection('user').doc(openid).get().then(res => {
        //用户存在则更新
        userData.lastTime = db.serverDate() //最后更新时间
        db.collection('user').doc(openid).update({
          data: userData
        })
      }).catch(err => {
        //用户不存在则新增
        userData.createTime = db.serverDate() //创建时间
        userData._id = openid
        db.collection('user').add({
          data: userData
        })
      })
    
    2020-05-13
    有用 1
    回复 4
    • 卖萌小袋鼠
      卖萌小袋鼠
      2020-05-13
      谢谢您的回答!这个方法我之前有用过,但是问题出在了.doc的传递值上,无论我使用全局变量的openid还是局部的都会报错。我把程序截图贴在下面,全局变量的定义为第二个图。
      2020-05-13
      回复
    • 驰子
      驰子
      2020-05-13回复卖萌小袋鼠
      错误说明很清楚了,docid为空,你没有给openid赋值
      2020-05-13
      1
      回复
    • 驰子
      驰子
      2020-05-13回复卖萌小袋鼠
      你点击下上面的原文地址,我更新了下,三种方式。
      2020-05-13
      1
      回复
    • 卖萌小袋鼠
      卖萌小袋鼠
      2020-05-14回复驰子
      多谢您的回答,我的问题解决了~
      2020-05-14
      回复
登录 后发表内容
问题标签