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());
});