尝试使用SELECT之类的查询来检索数据但使用Firebase和React Native。
我的Firebase DB中有以下结构:
{
"items" : {
"1234" : {
"value1" : 420,
"value2" : 69,
"ProductID" : 1234
},
"5678" : {
"value1" : 250,
"value2" : 12,
"ProductID" : 5678
},
"91011" : {
"value1" : 9001,
"value2" : 5,
"ProductID" : 91011
}
}
}
我使用以下代码尝试检索特定的产品ID
firebaseDB.ref("/items/")
.orderByChild("ProductID")
.equalTo(data)
.once("value", snapshot => {
if (snapshot.exists()){
const userData = snapshot.val();
console.log("INFO ::: Exists!", userData);
}
else {
console.log("INFO ::: No match!!!");
}
现在我的问题是我似乎无法选择数据。我认为这是我的查询的问题,因为我传递了ID 1234并且它没有找到此产品ID。
.equalTo(data) <---- is how I'm passing the product id
这是我的日志中打印的内容:
[11:43:19] [FIREBASE] p:0: Listen called for /items{"ep":"1234","i":"ProductID","sp":"1234"}
[11:43:19] [FIREBASE] p:0: Listen on /itemsfor {"ep":"1234","i":"ProductID","sp":"1234"}
[11:43:19] [FIREBASE] p:0: {"r":2,"a":"q","b":{"p":"/items","q":{"sp":"1234","ep":"1234","i":"ProductID"},"t":1,"h":""}}
[11:43:19] [FIREBASE] p:0: handleServerMessage d {"p":"items","d":{"1234":{"value1":420,"value2":69,"ProductID":1234},"5678":{"value1":250,"value2":12,"ProductID":5678},"91011":{"value1":9001,"value2":5,"ProductID":91011}}}
[11:43:19] [FIREBASE] event: /items:value:null
[11:43:19] [FIREBASE] p:0: Unlisten called for /items {"ep":"1234","i":"ProductID","sp":"1234"}
[11:43:19] [FIREBASE] p:0: Unlisten on /items for {"ep":"1234","i":"ProductID","sp":"1234"}
也许我应该尝试修改我在调用.once时传递的“价值”,但我不确定......任何想法?
谢谢
解决了问题:
穆罕默德很好地给出了一个解决方案,它允许检索数据。我忽略的是我使用String来查询我的数据,我正在寻找的数据是一个数字。
你可以试试这个
const data = 1234;
firebase
.database()
.ref()
.child('items')
.orderByChild('ProductID')
.equalTo(data)
.once('value')
.then(snapShot => {
let matchingProducts = [];
snapShot.forEach(child => {
matchingProducts = [child.val(), ...matchingProducts];
});
console.log("matchingProducts",matchingProducts);
return matchingProducts;
});