我目前正在使用Firebase在我的Vue.js项目中验证用户名和唯一性。用户名和密码验证始终返回true(使用firebase)
我的方法是这样的。首先,我将使用VUE资源阵列中的所有已注册/保存用户存储created
下钩:
//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;
});
数组将包含两个用户的用户名dyalibidyalibi和marantzmarantz和密码dyalibidyalibi和marantzmarantz连续(用户名和密码相同)。
然后在那之后,在computed
属性下,循环访问数组,并检查当前输入的密码或用户名是否与该数组中的某个用户相匹配。如果是这样的话,那么它的独特和返回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;
}
}
当我试图进入桑尼和桑尼两个用户名和密码,控制台显示true
这是预期的输出。那么我试图marantzmarantz和sonny(反之亦然)它显示false
,这是预期再次。但是当我试图进入dyalibidyalibi和桑尼(反之亦然),它显示true
这不应该是这种情况,因为注册用户的一个早已dyalibidyalibi的用户名或密码!
我的循环有什么问题吗?或我的布尔表达式?我如何解决这个问题,以便在将用户名和密码保存到数据库之前,注册的用户将始终拥有唯一的用户名和密码?
编辑:我把一些console.log()
的for
循环内,并且似乎计数器i
是停留在0和它从来没有达到1.我检查数组的长度,它总是显示2,所以我认为没有任何问题在长度上。什么似乎是我错过的问题?它已经两天,我无法弄清楚
它看起来对我像你当什么*不*匹配返回true。这不正是你想要的吗? – theGleep
@theGleep是的,这是我的目标。是'真'意味着用户名和密码是唯一的 – Kaddy03
所以你想确保...?没有用户名匹配任何密码?或者没有两个用户名匹配?或者用户名不在数据库中? – theGleep