this.collection()
.doc<MyModel>(documentId)
.set(data);
我想创建一个具有自定义文档ID的文档,因此不能在集合上使用add()
,但是在文档上使用set()
即可。问题是如果文档存在,set()
将被覆盖。我想防止这种情况,仅当ID不存在时才创建文档。
答案 0 :(得分:1)
如果要防止覆盖代码,请考虑使用update()
。更新将使用您提供的数据来更新文档,但是如果不存在,则不会创建该文件。
或者,您可以use security rules在服务器上强制执行此行为。
如果只希望创建文档,并且不允许更新和删除,请使用以下规则:
service cloud.firestore {
match /databases/{database}/documents {
// A write rule can be divided into create, update, and delete rules
match /cities/{city} {
allow create: if true;
allow update: if false;
allow delete: if false;
}
}
}
答案 1 :(得分:0)
如果您正在寻找一种创建不存在的文档并更新它的方法,请查看以下方法:Github comment