Firebase Snapshot文档数据顺序并非总是相同

时间:2019-10-13 05:08:37

标签: typescript firebase google-cloud-firestore google-cloud-functions

Firestore database Screenshot 我正在尝试从Firestore获取文档(附加数据库图像),并从检索到的数据中获取特定的键值。因此,我编写了以下代码来做到这一点。我正确地获取了数据,但是迭代顺序每次都在变化,因此无法从JSON对象获取正确的键值。从下面的代码中,有时我在data [0]处获得硬币价值,有时在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 个答案:

答案 0 :(得分:3)

如果我正确理解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);
   });

});