【发布时间】:2019-10-09 08:24:05
【问题描述】:
需要的详细信息
我正在为我的项目使用 Dialogflow 实现以及 Firebase 实时数据库。我的数据库有一个结构:
让我先告诉你数据库的结构。它有一个 ATM(自动柜员机)列表,其中包含完整的地址和其他必要信息。我需要获取所有具有给定值Pin number 的 ATM,而给定值Pin number 将来自 API 响应。这个密码就是那台 ATM 的邮政编码。很明显,使用Pin 号码,可以有很多台自动取款机。
我的问题
下面是我用来进行 API 调用和 Firebase 数据库查询的代码,接收到的 Pin 值作为 API 的响应。
var ref = db.ref("atms/");
var response = await axios.get('some URL'); //API call
var zipcodes = response.data.search_results; // Array of Pin values
console.log(zipcodes[2].postal_code); //This prints a Pin value 721304, which confirms successful response from API
ref.orderByChild("Pin").equalTo(zipcodes[2].postal_code).on("child_added", function(snapshot) { //this line is the problem
console.log(snapshot.val());
});
但是上面带有equalTo(zipcodes[2].postal_code)的代码没有给出任何响应。但是当我用equalTo(721304) 替换它时,它确实给出了预期的响应。需要强调的是,equalTo(zipcodes[2].postal_code) 和 equalTo(721304) 必须相同。
我需要使用这个equalTo(zipcodes[2].postal_code) 只是因为我将在这个查询上运行一个循环,这是因为需要一次查询很多很多Pin。
能否请您帮助我了解这里出了什么问题以及如何实施我在这里尝试做的事情?如果有任何后续问题,请告诉我。
【问题讨论】:
-
你确定
zipcodes[2].postal_code是数字类型吗?? -
它打印的值是 721304..所以是的
-
如果你这样做
console.log(typeof zipcodes[2].postal_code);会得到什么? -
天哪!它返回字符串
-
在下面查看我的答案
标签: firebase firebase-realtime-database dialogflow-es dialogflow-es-fulfillment