我正在使用angularFire 0.8.2而我正在尝试检查用户的唯一性。
此用户存储在users / [id]中,其中[id]是用于登录/密码用户的simpleLogin生成的id,以及来自社交网络的用户的社交uid(即:facebook:891239120)。
因此,当我使用Facebook登录时,我需要检查该用户是否已经在firebase中,所以我使用(来自angularFire-seed):
var userData = fbutil.syncObject('users/' + user.uid);
userData.$loaded()
.then(function (data) {
if(data) {
console.log('EXISTS');
console.log(data.$id);
} else {
console.log('NOT EXISTS');
}
}, function (err) {
console.error(err);
});
但是这不起作用,因为总是返回数据对象(即使对象没有关键user.uid不存在)
我发现obj。$ value在obj为空时填充为null,并且当obj没有原始值时不存在,但是我不确定这是否是检查它的正确方法。 / p>
而且我也不知道我是否使用$ asArray on / users它会在firebase上加载每个用户而不是生产它可能会出现性能问题?
答案 0 :(得分:13)
使用原始值(null为其中之一)时,AngularFire会将它们存储在$ value键中。因此,要测试路径中的数据是否存在,您只需执行:
data.$loaded(function() {
var dataExists = data.$value !== null;
});
答案 1 :(得分:0)
对于基元:使用data.$value !== null
对象:至少检查对象必须具有的键data.id !== null
。
对于每次检查,请将其合并到
中 if(data.$value === null && data.id === null) {
//not exist
}else{
// exist
};