所以我当前正在使用它来检查用户是否存在文档
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 都有一个文档>然后该文档内部是集合“charges”>然后“charges”内部是随机数字字符串下的文档,并且例如,字母“89nzVNrfQCOVqogDaGvo”是在他们购买后由 strip 为其费用生成的(如果他们有较旧的费用,则可能有多个,这就是为什么我需要找到最新的一个)>然后在最新的费用文档中,我需要检查“状态”字段,该字段的值为“成功”。这样我就可以检查谁已成功付款,如果他们成功,则会运行我想要的脚本。我对如何实现这一目标感到非常困惑。我知道如何进行基本查询,但这有点复杂。我需要能够确保当前 UID 具有具有该值的字段,以便我可以查看当前 UID 是否已付款以及脚本是否运行,从而设置自定义声明。
这是我尝试执行的操作的数据库存储流程的可视化,这样更容易理解 /image/yO66S.jpg
最佳答案
因此,您希望根据包含时间戳值的 created
字段获取 charges
(子)集合中的最新文档,并检查此文档的 status
字段。
以下应该可以解决问题:
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);
});
关于javascript - 尝试检查 firebase firestore 文档中的某个字段,但苦于其背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60289863/