equalTo() 未能达到 return 预期响应
equalTo() is failing to return expected response
需要详细信息
我正在为我的项目使用 Dialogflow fulfillment 以及 Firebase 实时数据库。我的数据库有一个结构:
先给大家介绍一下数据库的结构。它有一份 ATM(自动取款机)列表,其中包含完整地址和其他必要信息。我需要获取所有具有给定值 Pin
数字的 ATM,并且 Pin
数字的给定值将来自 API 响应。这个 Pin 号码只不过是该 ATM 的邮政编码。很明显,一个 Pin
号码,可以有很多台 ATM。
我的问题
下面是我用来进行 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
。
你能帮我理解这里出了什么问题吗?我该如何实现我想在这里做的事情?如果有任何后续问题,请告诉我。
如console.log(typeof zipcodes[2].postal_code);
所示(见上面的注释),zipcodes[2].postal_code
的值不是数字类型,而是字符串类型。您需要将其转换为数字,如下所示:
ref.orderByChild("Pin").equalTo(Number(zipcodes[2].postal_code)).on("child_added", function(snapshot) { //this line is the problem
console.log(snapshot.val());
});
需要详细信息
我正在为我的项目使用 Dialogflow fulfillment 以及 Firebase 实时数据库。我的数据库有一个结构:
先给大家介绍一下数据库的结构。它有一份 ATM(自动取款机)列表,其中包含完整地址和其他必要信息。我需要获取所有具有给定值 Pin
数字的 ATM,并且 Pin
数字的给定值将来自 API 响应。这个 Pin 号码只不过是该 ATM 的邮政编码。很明显,一个 Pin
号码,可以有很多台 ATM。
我的问题
下面是我用来进行 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
。
你能帮我理解这里出了什么问题吗?我该如何实现我想在这里做的事情?如果有任何后续问题,请告诉我。
如console.log(typeof zipcodes[2].postal_code);
所示(见上面的注释),zipcodes[2].postal_code
的值不是数字类型,而是字符串类型。您需要将其转换为数字,如下所示:
ref.orderByChild("Pin").equalTo(Number(zipcodes[2].postal_code)).on("child_added", function(snapshot) { //this line is the problem
console.log(snapshot.val());
});