【发布时间】:2017-12-13 10:43:32
【问题描述】:
我将 Firebase 函数用于我的 Alexa 技能。这按预期工作,但我在数据库中的数据很特殊,有时查询无法返回任何值。
我的键是从 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 技能应该命名为下一个生日,它只能在 09.11 月和 01.1 月之后有效,因为我不知道如何查询数据。或者我可以以更好的方式构建我的数据以查找下一个生日吗?
【问题讨论】:
-
您可能会被 Firebase SDK 的“数组强制”所吸引。有没有办法可以更改数据并为键添加前缀(例如“day_0101”)。这将防止强制并且(如果这是问题的原因)将解决问题。
-
当然,我可以更改密钥,但这将如何解决“未找到数据”问题?我的最后一个键是“1109”,如果我用“key = '1110'”调用上述查询,我将不会得到任何值(现在)。
-
您能否编辑您的问题以显示您正在查询的 JSON(作为文本,没有屏幕截图)?您可以通过单击Firebase Database console 中的“导出 JSON”链接来获取此信息。
-
以简化的方式添加了 Firebase 数据库结构。
-
啊,我想我现在更好地理解了你的问题。您是在问:我怎么知道没有与我的查询匹配的生日?
标签: javascript firebase firebase-realtime-database firebase-admin