javascript - 用户名和密码验证始终返回 true (使用 firebase)

标签 javascript firebase-realtime-database vuejs2

我目前正在使用 firebase 在我的 Vue.js 项目中验证用户名或用户名的唯一性。

我的方法是这样的。首先,我将使用 vue-resource 将所有注册/保存的用户存储在 created Hook 下的数组中:

//RETRIEVE REGISTERED TAILORS
    this.$http.get('https://nots-76611.firebaseio.com/tailors.json').then(function(data){
      return data.json();
    }).then(function(data){
      var usersArray = [];
      for (let key in data){
          data[key].id = key;
          usersArray.push(data[key]);
      }
      this.regTailors = usersArray;
    });

该数组将包含两个用户,用户名分别为 dyalibidyalibimarantzmarantz,密码分别为 dyalibidyalibimarantzmarantz (用户名和密码相同)。

然后,在计算属性下,我循环遍历数组并检查当前输入的密码或用户名是否与数组中的用户之一匹配。如果是这种情况,那么它是唯一的,并将返回 true 否则,它不是唯一的,并将返回 false:

isUnique: function(){
      for (var i = 0; i < this.regTailors.length; i++) {
        if((this.tailor.tUsername!=this.regTailors[i].tUsername) && (this.tailor.tPassword!=this.regTailors[i].tPassword))
         return true;
        else
         return false;
      }
    }

当我尝试输入 sonnysonny 作为用户名和密码时,控制台显示 true 这是预期的输出。然后我尝试了marantzmarantzsonny(反之亦然),它显示false,这又是预期的。但是当我尝试输入 dyalibidyalibisonny (反之亦然)时,它显示 true ,这不应该是这样,因为注册用户之一已有dyalibidyalibi的用户名或密码!

我的循环有问题吗?或者我的 bool 表达式?如何解决此问题,以便注册的用户在将其保存到数据库之前始终拥有唯一的用户名和密码?

编辑:我在 for 循环中放入了一些 console.log() ,并且计数器 i 似乎被卡住了为0并且永远不会达到1。我检查了数组的长度,它总是显示2,所以我认为长度没有问题。我似乎缺少什么问题?已经两天了,还是想不通

最佳答案

我建议您尝试使用内置函数 find 的解决方案,在这种情况下,您希望使用 for 循环将一个值与数组进行比较并返回一旦满足评估,就返回 bool 值,但是一旦满足您的条件,评估就会停止,为什么?因为 for 循环子句会通过 return 键停止,所以它类似于在函数中返回一个值(它会停止函数执行)。

所以尝试这样的事情:

isUnique() {
  var hasTheSameValue = ['dyalibidyalibi', 'marantzmarantz'].find(function (elemOfArrayToEvaluate) {
    return elemOfArrayToEvaluate === 'Your current username or pass value';
  })

  if (hasTheSameValue) {
    // has the same value so it's not unique
    return false
  } else {
    return true
  }

}

您可以找到有关find函数的更多信息here

关于javascript - 用户名和密码验证始终返回 true (使用 firebase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813211/

相关文章:

swift - 在 Swift 中从 Firebase 中的多个节点获取数据

vue.js - 获取当前页面标题并从嵌套组件更新并在 Vuejs 2 中更新

vue.js - 视觉 : Access Vue component method inside rendered named slot

performance - (Vue) 计算属性中局部作用域变量对性能的影响

javascript - Meteor 0.8 Blaze 如何更新 Jquery 插件的渲染变化

javascript - Sencha Touch 垂直滚动问题

javascript - 如果 div 移动,Angularjs ng-repeat 不起作用

javascript - 实现无限滚动 Bigcommerce Stencil 类别列表

java - 如何在几次间隔后删除 Firebase 的最后一个条目?

javascript - Firebase 函数 : Cannot read property 'val' of undefined