云函数问题,查询导致数组?



我需要进入 itens 内部才能进入某个项目,而不是进入产品才能获得"ean"字段和 检查某些产品是否具有正文请求中的"EAN"。

我的数据库是这样组织的:

"cart": {
"itens": {
"0": {info here},
"1": {info here}
"2": {
"more info here",
"product": {
"avaliable": true"
"quantity": 231,
"ean": "0000001312"
}
continue listing until 47

但是当我执行我的云功能时:

exports.getItemByEan = functions.https.onRequest(async (request, response) => {
const db = admin.database();
const itens = db.ref();
const eanRef = itens.child('carrinho').child('itens');
const query = eanRef.orderByKey();
try {
const dataSnapshot = await eanRef.once('value');
response.send(dataSnapshot.val());
} catch (error) {
console.log(error)
}
}) 
});

但是我需要进入 iten,然后进入"产品"字段,而不是获取"ean",但这样做的结果就像一个数组而不是一个对象,并且没有出现键:

[
{,
"product": {
"avaliable": true,
"quantity": 9183
"ean": "0000000000017",
},
{
"product": {
"avaliable": true,
"quantity": 131
"ean": "0000000044790",
},
},
.....continues

我想了解为什么查询的结果是一个数组,而不是像Firebase数据库中那样在itens之前带有键的对象,然后如何通过Ean找到特定产品的更好方法。

我什至不能像

const db = admin.database();
const itens = db.ref();
const eanRef = itens.child('cart').child('itens').child('product'); // This doesnt works, just returns nothing, why ?????
// Isn't "product" field inside the item ? 

如果你的数据库键都是数字,那么你将得到一个具有相同项目的数组,而不是一个对象,其中数组的索引与数据库中节点的键相同。 您的代码需要为此做好准备。 因此,如果您希望客户端接收对象而不是数组,则必须自己转换它。

相关内容

  • 没有找到相关文章

最新更新