我正在使用 Android 客户端创建新文档。
Map<String, Object> city = new HashMap<>();
city.put("name", "Los Angeles");
city.put("state", "CA");
city.put("country", "USA");
db.collection("cities").document("LA")
.set(city)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully written!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error writing document", e);
}
});
这是我的安全规则
service cloud.firestore {
match /databases/{database}/documents {
match /cities/{city} {
allow create: if (request.auth.uid != null);
allow update: if (request.auth.uid != null) && !("country" in request.writeFields) );
}
}
}
正如您从安全规则中看到的,只有当文档不包含“国家/地区”字段时才会发生更新。创建规则很简单。
在此示例中,我的集合中没有文档“LA”,当我测试它时,我收到 PERMISSION DENIED 错误。调整更新规则确认,.set() 正在调用更新规则。
如何使 .set 专门调用“创建”规则?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)