Javascript 试图检查firebase firestore文档中的某个字段,但却在与它背后的逻辑斗争

Javascript 试图检查firebase firestore文档中的某个字段,但却在与它背后的逻辑斗争,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,因此,我目前正在使用它来检查并查看是否存在针对某个用户的文档 let user = firebase.auth().currentUser; let userInfo = db.collection("stripe_customers").doc(user.uid); 如果有,它会运行我想要的脚本 userInfo.get().then(function (doc) { if (doc.

因此,我目前正在使用它来检查并查看是否存在针对某个用户的文档

let user = firebase.auth().currentUser;
                        let userInfo = db.collection("stripe_customers").doc(user.uid);

如果有,它会运行我想要的脚本


userInfo.get().then(function (doc) {
                            if (doc.exists) {

但是,我需要尝试检查某些文档中的字段值,而不是检查特定文档


例如,我有一个名为“stripe_customers”>的集合,它通过用户的UID为每个用户创建了一个文档>然后在文档内部是集合“费用”>然后在“费用”内部是一个随机数字和字母字符串“89nzVNrfQCOVqogDaGvo”下的文档,例如,由stripe在他们购买后为他们的费用生成的文档(如果他们有较旧的费用,则可能有多个此类费用,这就是我需要查找最新费用的原因)>然后在最新的费用文档中,我需要检查字段“status”,该字段的值为“successed”。这样我可以检查谁成功付款,如果他们成功付款,将运行我想要的脚本。我只是对如何实现这一点感到困惑。我知道如何进行基本查询,但这有点复杂。我需要能够确保当前UID具有该值的字段,以便我可以查看当前UID是否付款,以及他们是否付款脚本将运行,这将设置自定义声明


这是我的数据库存储流程的一个可视化视图,我正在尝试这样做,它更容易理解

因此,您希望根据
创建的
字段(包含时间戳值)获取
费用
(子)集合中的最新文档,并检查此文档的
状态
字段的值

下面应该可以做到这一点:

const user = firebase.auth().currentUser;
const subCollRef = db.collection("stripe_customers").doc(user.uid).collection("charges");

const query = subCollRef.orderBy('created', 'desc').limit(1);

query.get()
  .then(snapshot => {
    if (snapshot.size > 0 && snapshot.docs[0].data().status === "succeeded") {
         //payment was succeeded, you can "run your script"
    });
  })
  .catch(err => {
    console.log('Error getting documents', err);
  });

因此,您希望根据包含时间戳值的
创建的
字段获取
费用
(子)集合中的最新文档,并检查此文档的
状态
字段的值

下面应该可以做到这一点:

const user = firebase.auth().currentUser;
const subCollRef = db.collection("stripe_customers").doc(user.uid).collection("charges");

const query = subCollRef.orderBy('created', 'desc').limit(1);

query.get()
  .then(snapshot => {
    if (snapshot.size > 0 && snapshot.docs[0].data().status === "succeeded") {
         //payment was succeeded, you can "run your script"
    });
  })
  .catch(err => {
    console.log('Error getting documents', err);
  });

在最近的押记文件中->您如何在
费用
子集合中识别此最新文档?此集合的文档中是否有时间戳字段?是的,最近的费用文档确实有一个已创建字段和一个带有日期的值
已创建:158021485
。例如,我不确定是什么原因使此文档比si更复杂你已经熟悉的MPE查询。我也很难从你在这里写的内容中理解你的数据是什么样子。如果你提供一个图表,可能会更容易。是的,让我做一些直观的东西让你更好地理解,给我一些在这里查看“最新的收费文档”中的内容->您如何在
费用
子集合中识别此最新文档?此集合的文档中是否有时间戳字段?是的,最近的费用文档确实有一个已创建字段和一个带有日期的值
已创建:158021485
。例如,我不确定是什么原因使此文档比si更复杂你已经熟悉的MPE查询。我也很难从你在这里写的内容中理解你的数据是什么样子。如果你提供一个图表,可能会更容易。是的,让我做一些直观的东西让你更好地理解,给我一些在这里检查一下