Firebase更新(如果存在)



我正试图使用.update((方法在firestore中创建一个更新函数。

下面是我正在运行的函数示例:

db.collection('Users').doc(offeruserid).update({
overrideTag: process.env.A_ULTRA_SECRET_KEY,
userExperience: firebase.firestore.FieldValue.increment(Number(offerrate))
})

现在我真正想做的是,在文档中查看字段"overrideTag"是否存在。如果它不在那里,它不会更新它,只是忘记它。

此外,我希望做到这一点,而不需要首先获取数据,看看它是否存在,然后单独创建一个更新函数——我知道可以这样做。

这是我们可以在防火区内做的事情吗?

如果不先阅读文档,就无法做到这一点。通常人们会在事务中进行这样的检查和设置操作,但您应该注意,事务在编写文档之前会先读取文档

您可以在安全规则中执行此操作,方法是检查overrideTag字段中是否存在超机密值。

service cloud.firestore {
match /databases/{database}/documents {
match /Users/{user} {
allow update: if request.resource.data.overrideTag == "YOUR_SUPER_SECRET_VALUE";
}
}
}

您还可以将所有超机密值存储在数据库中的某个位置,然后通过exists调用检查它们是否存在。

if exists(/databases/$(database)/documents/secrets/$(request.resource.data.overrideTag))

后者将是一个收费的(可能是付费的(读取操作,但您不需要读取应用程序代码中的数据。

相关内容

  • 没有找到相关文章