【发布时间】:2020-06-22 10:50:07
【问题描述】:
我有一个程序在 firestore 上对集合执行批量写入。
我只在集合中不存在 is 时才尝试编写文档,如果存在则跳过而不修改任何内容。
安全规则如下:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /collection/{id} {
allow create,delete: if request.auth.uid != null;
}
}
}
在测试工具上进行测试时,它按预期工作。我只被允许在这个集合中创建和删除文档。但是,当从程序运行时,如果文档字段(在本例中为戳记)已经存在,则批量写入能够修改文档字段。
代码如下:
var batch = firestore.batch();
var docRef= firestore.collection("collection").doc(data.id);
batch.set(
docRef,{
id: data.id,
stamp: new Date(),
},
);
我错过了什么,或者做错了什么?
【问题讨论】:
-
你在哪里运行这段代码?如果这是使用常规 JavaScript 客户端,则应该无法更新文档。如果它使用 Node.js Admin SDK 运行,它会以绕过安全规则的提升权限运行。
-
我将 firebase-admin 添加到我的 Node.js 项目中。我没想到……谢谢
标签: javascript firebase google-cloud-firestore