Chi*_*ipe 6 javascript firebase firebase-realtime-database
我发现在firebase中返回数据时child_added和之间有一点区别value.使用value我可以测试,看看是否snapshot.val()返回了一些东西,或者不使用它,如下所示:
获取数据:
ref.orderByChild('appUserName')
.equalTo(issuer)
.once('value')
.then(function (snapshot) {
var value = snapshot.val();
if (value) {
// Has Value...
}else{
//Has No Value...
}
Run Code Online (Sandbox Code Playgroud)
数据结构:
AppUsers --
234jl23jl4kj23 --
data --
//.. data
userName : "testUser1",
userPass: "password123"
9873h23foiu34u
//same structure
o8987s52df134o
//same structure
Run Code Online (Sandbox Code Playgroud)
如果我console.log返回了值,snapshot.val()它返回生成密钥级别的数据:
{234jl23jl4kj23 --
{data --
//.. data
userName : "testUser1",
userPass: "password123"}}
Run Code Online (Sandbox Code Playgroud)
如果我使用child_added以下数据获取数据:
ref.orderByChild('appUserName')
.equalTo(issuer)
.once('child_added')
.then(function (snapshot) {
var value = snapshot.val();
if (value) {
// Has Value...
}else{
//Has No Value...
}
Run Code Online (Sandbox Code Playgroud)
.then如果issuer找不到值appUserName,它甚至不会进入函数,所以我不能在firebase函数中看到它是否有值.此外,child_added获取数据的方式更深一层.它不是返回生成的键,而是返回该键中的值:
{data --
//.. data
userName : "testUser1",
userPass: "password123"}
Run Code Online (Sandbox Code Playgroud)
我更喜欢这样使用它,因为它将是一个较少的循环,我必须检查首先获取密钥内的数据,然后循环数据点中的对象.但是,如果issuer不在appUserName其中,我甚至不会为我做功能if else
有没有办法在child_added没有循环的情况下深入钻取,但仍然能够if else检查是否snapshot.val()有任何东西?
child_added在您查询的节点下触发每个匹配子节点的事件.如果没有匹配的孩子,则不会开火.
这意味着要测试节点是否存在,您必须使用value处理程序.由于查询可以有多个结果,因此您需要遍历子项.
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |