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

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,

我需要进入itens以进入某些项目,而不是进入产品以获得ean字段和 检查某些产品是否具有body请求中的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 ? 

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

我只想访问一个任务的product字段,并根据product.ean字段在数据库中搜索给定项。