Проблема облачных функций, запрос приводит к массиву? - PullRequest
0 голосов
/ 16 февраля 2020

Мне нужно попасть внутрь itens до go в какой-то элемент, а не в product, чтобы получить поле "ean" и проверить, есть ли у некоторого продукта "ean" из запроса тела.

My база данных организована так:

"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, а затем внутрь поля "product" и чем получить «EAN», но результат этого похож на массив массива объекта и без появления ключей:

[
    {,
        "product": {
            "avaliable": true,
            "quantity": 9183
            "ean": "0000000000017",
    },
    {

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

Я хочу вещи, понять, почему результат запроса является Массив, а не Объект с ключами до итенов, как в базе данных Firebase, и как лучше найти указанный продукт c от 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 ? 

1 Ответ

1 голос
/ 16 февраля 2020

Если все ключи вашей базы данных являются числами, то вместо объекта вы получите массив с теми же элементами, где индексы массива совпадают с ключами узлов в базе данных. Ваш код должен быть подготовлен для этого. Итак, если вы хотите, чтобы клиент получил объект вместо массива, вам придется преобразовать его самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...