Порядок данных документа Firebase Snapshot не всегда одинаков - PullRequest
0 голосов
/ 13 октября 2019

Скриншот базы данных Firestore Я пытаюсь получить документ из Firestore (изображение базы данных прилагается) и получить определенное значение ключа из полученных данных. Поэтому я написал следующий код для этого. Я получаю данные правильно, но порядок итераций меняется каждый раз, из-за чего я не могу получить правильное значение ключа из объекта JSON. Из приведенного ниже кода иногда я получаю значение монет в data [0], иногда я получаю значение gems в data [0], а иногда и значение другого в этом месте. поэтому возникает проблема с получением правильной пары ключ-значение.

export const playRoulette = functions.https.onRequest((request, response) 
=> {
  const promise = admin
    .firestore()
    .doc("cashon/G0eebNKdpNR9vsig96nB3eKyVqg1")
    .get();

  const p2 = promise.then(snapshot => {
    const data = snapshot.data();

    if (data) {
      const gemsKey = Object.keys(data)[0];
      const gemsValue = Object.values(data)[0];

      response.send(gemsKey + " : " + gemsValue);
    }
  });

  p2.catch(error => {
    response.status(500).send("Error getting documents: " + error);
  });
}

1 Ответ

3 голосов
/ 13 октября 2019

Если я правильно понимаю, что значение gemsKey + " : " + gemsValue должно быть gems : 45000 (на основе вашего скриншота), вам следует сделать следующее:

export const playRoulette = functions.https.onRequest((request, response) => {
  admin
    .firestore()
    .doc("cashon/G0eebNKdpNR9vsig96nB3eKyVqg1")
    .get()
    .then(snapshot => {
        if (snapshot.exists) {

            const data = snapshot.data();
            const gemsValue = data.gems;

            response.send( { "gems : " + gemsValue });

        } else {
           // snapshot.data() will be undefined in this case
           throw new Error("Document does not exist");
        }
   })
   .catch(error => {
         response.status(500).send("Error getting documents: " + error);
   });

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