没有结果的 Firebase 数据库
Firebase Database with no result
我正在为我的 Alexa 技能使用 Firebase Functions。这按预期工作,但我在数据库中的数据很特殊,有时查询不能 return 任何值。
我的键是从 0101 到 1231 (MMDD),如果我在最高键之后查询,我不会得到任何回调,因为 firebase 没有任何数据。
如何设置查询,在这种情况下我找到第一个 >= "0101"?
当前通话是
admin.database().ref("calendar/birthday")
.orderByKey().startAt(key).limitToFirst(1).once("child_added")
.then(function(snapshot) { ... })
我的数据库结构
"calendar" : {
"birthday" : {
"0111" : {
... -> 1st person
},
...
"0710" : {
... -> xth person
},
...
"1109" : {
... -> last person
}
}
}
我的Alexa skill应该是下一个生日的名字,而且只能用到11月9日和1月1日之后,因为我不知道怎么查询数据。或者我能否以更好的方式构建我的数据以查找下一个生日?
我想您正在寻找:我怎么知道没有符合我的查询的生日?
在这种情况下,您需要监听 value
事件。如果你用 once()
附加它,它会在你附加查询时立即触发,无论是否有结果。
admin.database().ref("calendar/birthday")
.orderByKey().startAt(key).limitToFirst(1).once("value")
.then(function(snapshot) {
if (!snapshot.exists()) {
console.log("There are no birthdays on or after "+key);
}
else {
snapshot.forEach(function(daySnapshot) {
console.log("There is a birthday on "+daySnapshot.key);
});
}
})
exists()
检测到没有匹配查询的结果。 else
中的 forEach()
循环是使用 value
查询的结果。当您对 Firebase 数据库执行查询时,可能会有多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
我正在为我的 Alexa 技能使用 Firebase Functions。这按预期工作,但我在数据库中的数据很特殊,有时查询不能 return 任何值。
我的键是从 0101 到 1231 (MMDD),如果我在最高键之后查询,我不会得到任何回调,因为 firebase 没有任何数据。
如何设置查询,在这种情况下我找到第一个 >= "0101"?
当前通话是
admin.database().ref("calendar/birthday")
.orderByKey().startAt(key).limitToFirst(1).once("child_added")
.then(function(snapshot) { ... })
我的数据库结构
"calendar" : {
"birthday" : {
"0111" : {
... -> 1st person
},
...
"0710" : {
... -> xth person
},
...
"1109" : {
... -> last person
}
}
}
我的Alexa skill应该是下一个生日的名字,而且只能用到11月9日和1月1日之后,因为我不知道怎么查询数据。或者我能否以更好的方式构建我的数据以查找下一个生日?
我想您正在寻找:我怎么知道没有符合我的查询的生日?
在这种情况下,您需要监听 value
事件。如果你用 once()
附加它,它会在你附加查询时立即触发,无论是否有结果。
admin.database().ref("calendar/birthday")
.orderByKey().startAt(key).limitToFirst(1).once("value")
.then(function(snapshot) {
if (!snapshot.exists()) {
console.log("There are no birthdays on or after "+key);
}
else {
snapshot.forEach(function(daySnapshot) {
console.log("There is a birthday on "+daySnapshot.key);
});
}
})
exists()
检测到没有匹配查询的结果。 else
中的 forEach()
循环是使用 value
查询的结果。当您对 Firebase 数据库执行查询时,可能会有多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。