收藏
回答

云开发弄一个注册页面,用户名查重总是出错怎么办?

我还是个学生,接触微信小程序编程不久,有什么不对的希望大家指出来。现在我打算用云开发弄一个注册页面,简单来说就是读取用户输入的账号数据,然后存到数据库的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 个回答

  • 老张
    老张
    02-06

    查到0条数据也是成功。

    02-06
    赞同
    回复
  • 铅笔画不出蜡笔的味道
    铅笔画不出蜡笔的味道
    02-05

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

    02-05
    赞同
    回复 2
    • 铅笔画不出蜡笔的味道
      铅笔画不出蜡笔的味道
      02-05
      之前写的你参考下,红框:云函数查询同年月数据,绿框:判断查询到的为空,即不存在同年月数据,真值时=》蓝框:添加此条数据。顺便说下查询最好使用云函数,否则数据库可能需要改下权限为所有用户可读。
      02-05
      回复
    • 我们依然没有翅膀
      我们依然没有翅膀
      02-05
      这样的啊,是我想岔了,谢谢大兄弟,我这就去试一下
      02-05
      回复
登录 后发表内容
问题标签