收藏
回答

数据库中出现了两条除了_id不同,其他一模一样的数据

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 微信iOS客户端 wx1cb22f68634cb813 2.10.1

用的button按钮触发以下方法:

wx.cloud.callFunction({ //已经授权,则去拿openId
        // 云函数名称,获取openID
        name: 'login'
        // 传给云函数的参数
      }).then(res => {
        // output: res.result === 3
        let openid = res.result.openid
        //去检查openid是否已经在数据库user中是否有值,如果有值,则说明之前注册过
        db.collection('user').where({
          _openid: db.command.eq(openid)
        }).get().then(res => {
          if (res.data.length > 0) {
            let userData = res.data[0]
            that.globalData.user = userData
            resolve(userData)
          } else {
            //去检查nickname是否重复
            db.collection('user').where({
              tulangNickName: db.command.eq(userInfo.nickName)
            }).get().then(res => {
              if (res.data.length > 0) {
                userInfo.tulangNickName = userInfo.nickName + '-' + utils.wxuuid()
              } else {
                userInfo.tulangNickName = userInfo.nickName
              }
              db.collection('user').add({
                // data 字段表示需新增的 JSON 数据
                data: {
                  '_id': utils.wxuuid(),
                  //'nickName': tempUser.nickName,
                  'tulangNickName': userInfo.tulangNickName,
                  //'avatarUrl': tempUser.avatarUrl,
                  'tulangAvatarUrl': userInfo.avatarUrl,
                  'QRUrl': '',//用户的微信二维码
                  'tulangQRUrl': '',//带有该用户唯一标识的小程序码
                  'selfIntroduction': '', //  自我介绍
                  'role': 'photographer',
                  'createTime': new Date(),
                  'language': userInfo.language
                }
              }).then(res => {
                console.log('==addUser.success==', res)
                if (res._id) {


                  db.collection('user').where({
                    _openid: db.command.eq(openid)
                  }).get().then(res => {
                    if (res.data.length > 0) {
                      let userData = res.data[0]
                      that.globalData.user = userData
                      resolve(userData)
                    }
                  })
                
                }
              })
                // .catch(reject(console.error))
            })
          }
          })
          // .catch(reject(console.error))
      })

数据库中重复的数据截图:


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

1 个回答

  • 神经蛙
    神经蛙
    2020-02-21

    除非你把_openid设置成唯一索引,

    login返回的openid打印出来看看吧.

    2020-02-21
    有用
    回复 5
    • 2020-02-21
      谢了哥么。填补我的知识点
      2020-02-21
      回复
    • wubba lubba dub dub
      wubba lubba dub dub
      2020-03-08
      谢谢,已解决
      2020-03-08
      回复
    • wubba lubba dub dub
      wubba lubba dub dub
      2020-03-08
      但是同一用户再次添加数据,会报错而且插入不了,第一次添加数据会报错但能插入
      2020-03-08
      回复
    • 神经蛙
      神经蛙
      2020-03-08回复wubba lubba dub dub
      索引设计问题
      2020-03-08
      回复
    • Wptao
      Wptao
      2020-05-13回复
      咋整???
      2020-05-13
      回复
登录 后发表内容
问题标签