Javascript 云函数问题,查询导致数组?
我需要进入itens以进入某些项目,而不是进入产品以获得ean字段和 检查某些产品是否具有body请求中的ean 我的数据库是这样组织的:Javascript 云函数问题,查询导致数组?,javascript,firebase-realtime-database,google-cloud-functions,Javascript,Firebase Realtime Database,Google Cloud Functions,我需要进入itens以进入某些项目,而不是进入产品以获得ean字段和 检查某些产品是否具有body请求中的ean 我的数据库是这样组织的: "cart": { "itens": { "0": {info here}, "1": {info here} "2": { "more info here", "product": { "avaliable": true" "quantity": 231,
"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 ?
如果数据库键都是数字,那么将得到一个具有相同项的数组,而不是对象,其中数组的索引与数据库中节点的键相同。您的代码需要为此做好准备。因此,如果您希望客户端接收一个对象而不是数组,您必须自己转换它。我只想访问一个任务的product字段,并根据product.ean字段在数据库中搜索给定项。