云开发弄一个注册页面,用户名查重总是出错怎么办?
发布于 7 年前 作者 junlei 4240 次浏览 来自 问答

我还是个学生,接触微信小程序编程不久,有什么不对的希望大家指出来。现在我打算用云开发弄一个注册页面,简单来说就是读取用户输入的账号数据,然后存到数据库的users集合,自然在添加新的账号信息前,要先查询users中是否已存在相同账号,若存在则提示账号已被注册,否则添加账号进users集合,完成注册。问题是我在使用db.collection(“users”).where{(accountnumber:this.data.accountnumber}).get({success:res=>{},fail:res=>{}})进行转换查重时发现最后总是显示’该用户名已被注册’,既然调用了success的回调函数就表示存在相同账号,可账号集合明明是空的,这也会查到相同用户名吗,因为这个问题,无法添加新的账号信息,我也试着把匹配条件改成确定的where{(accountnumber:‘1234’}),也还是会查询成功,不知道怎么回事,刚接触微信小程序云开发不久不知道哪里有问题,有哪位兄弟能够替我解惑吗?下面是部分源码

const db = wx.cloud.database();
      let accountnumberN = this.data.accountnumber;//账号
      let password = this.data. password;//密码
      let nickname = this.data.nickname;//昵称
      db.collection("users").where({
        accountnumber:this.data.accountnumber
      }).get({
      success:res=>{
        wx.showToast({
          title: '该用户名已被注册',
          icon:'none'
      })
        wx.navigateTo({
                url: '/pages/my/my',
          })
      },fail:err=>{
            db.collection("users").add({
              data: {
                accountnumber:accountnumberN,
                  password: password,
                  nickname: nickname,
                  postnumber:0,
                  replynumber:0
             }, success: res => {
              wx.showToast({
                title: '注册成功~',
                icon: 'loading',
                duration: 2000
              })
              console.log(res)
              that.setData({
              success: true
            })
            app.globalData.mynickname = res.data.nickname;
            app.globalData. myaccountnumber = res.data. accountnumber;
            //若无返回应设置返回
            }, fail: err => {
                wx.showToast({
                title: '注册失败',
                icon:'none'
                })
              }
          })
   
        }
      })
2 回复

回调成功并不是指查到了同名,只是证明了代码逻辑通顺,没有异常情况,你应该判断返回的res.result.data的长度或内容长度为0或内容为null则表示不存在重名

查到0条数据也是成功。

回到顶部