- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Cloud Firestore 中有一个文档。
“事件”字段的结构如下:
{
"events" : [
"eventID-1": [
"value1",
"value2"
],
"eventID-2": [
"value2",
"value3"
],
"eventID-3": [
"value3",
"value4"
]
]
}
更新[ swift ]:
self.db.collection("collection").document(document).updateData([
"events.eventID-1": FieldValue.arrayUnion([value2])
...
如何制定 Firebase Cloud Firestore 安全规则:
值(value)是独一无二的。也就是写的时候检查数组eventID-1,eventID-2,eventID-3....中是否不存在该值。
检查(长度)记录来的值
我只是想出了如何检查传入的数据,它是一张 map ,我们只得到一个值。
match /databases/{database}/documents {
match /collection/{documentID} {
allow write: if request.resource.data is map
&& request.writeFields.size() == 1
}
}
更新:已处理:
allow write : if request.resource.data.events.values()[0].size() < 100
allow write : if (request.resource.data.events.keys()[0] in resource.data.events.keys()) == false
但是我还没有想出如何解决我的问题((((帮忙!!!
最佳答案
这是一个尝试:
allow write: if request.writeFields.size() == 1
&& geteventarray_after().size() == geteventarray_before().size() + 1 // Making sure that the size increased so that is is unique
&& getnewelement().size() < 100 // Making sure the new element size is < 100
&& getnewelement() is string // Other valdiations...
function getsubstr(str, from, to) {
return str[from:to];
}
function geteventarrayname() {
return getsubstr(input, "events.".size(), request.writeFields[0].size());
}
function geteventarray(map) {
return map.get(["events", geteventarrayname()], [])
}
function geteventarray_after() {
return geteventarray(request.resource.data);
}
function geteventarray_before() {
return geteventarray(resource.data);
}
function getnewelement() {
return geteventarray_after()[geteventarray_after().size()-1]; // It is added at the end
}
编辑:这是未经测试的,但应该是一个好的开始
关于swift - updateData FieldValue.arrayUnion([value]) [swift] 的 Firebase Cloud Firestore 安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60455280/
我正在使用 vue.js 和 firebase 构建一个基本的 CRUD 应用程序。我正在尝试构建收藏夹功能,但在存储数据时遇到了一个持续存在的问题。 当用户单击“添加到收藏夹”按钮时,我试图将文档
例如我有这样一个文档: team: { members: [{name: "john", age: 2}, {name: "tim", age: 3}] } 我想将 Tims 年龄更新为 4 {nam
我的 Firestore 数据库中有一个数组,假设它是 [0, 2, 5],我想添加另一个值为 [1, 3, 5] 的数组。当我使用 arrayUnion 添加数组时,它仅添加尚不存在的元素。到目前为
如何将数组传递到 firebase firestore arrayUnion() function ? 当我尝试传递数组时出现此错误。 错误 Error: 3 INVALID_ARGUMENT: Ca
我已经在文档中的集合中创建了一个审阅系统。在文档中,我有一个数组,其中的平均评分为(在上传评论时添加了评分),但是如果我使用FieldValue.arrayUnion上传两个相等的数字,我只会得到一个
我有一个云函数,它会在特定事件发生时调用。在函数中,我将获得一个字符串数组,例如 let h:string[] = ["foo","bar","baz"] 当我尝试更新数组时,类似于此的内容我的文档中
是否可以只允许压入数组字段(在文档中),但阻止写入该数组中的任何现有值? myDocument: { myArray: [ "value1", "value2"
在 Firestore 中,我有一个包含名为 myMap 的 map 的文档,其中包含一个名为 myArr 的数组字段。 是否可以使用 arrayUnion 来更新 myArr,方法是在事务中向其添加
我有一个基本数据库,它本质上存储了用户下方的产品 ID 数组。用户可以选择要添加到数组的产品,因此使用 'arrayUnion' 是有意义的,因此我避免不断读取和重写数组,但是,我不断收到错误 *"P
在我的 Android 应用程序中,我构建了一个名为“Lesson”的对象(它只有 2 个字符串字段)。 我在 Firestore 上有一个集合,其中一个字段是“类(class)”数组(称为“我的类(
我正在创建一个聊天应用程序,用户可以在其中与不同的人开始多个聊天(就像其他聊天应用程序的其余部分一样)。我正在使用 Swift 与 Cloud Firestore . 我的数据库设计如下: Chat
我想通过创建 ArrayUnion 对象来更新我的 firestore 数据库。不幸的是,我的更新方法产生了以下错误: TypeError: ('Cannot convert to a Firest
我正在尝试更新我的 firestore 中的数组,我遵循了 Google ( https://firebase.google.com/docs/firestore/manage-data/add-da
我当前的文档如下所示: { "assignmentName": "OS Assignment-2", "dueDate": "10 August", "createdAt":
addDeposit(account, deposit) { let depositsDoc = this.db.collection("accounts")
我目前正在 iOS 和 Android 中使用 Firebase 开发 Xamarin 应用程序。我正在尝试向 firestore 中的现有数组添加一个值。在 iOS 中,我使用 FieldValue
我有这样的云火存储对象 "TestCollection" : ["Test1","Test"] 现在我想用 FieldValue.arrayUnion 更新这个数组因为如果元素相同,那么我不想做任何事
我正在使用 firestore 更新我的对象上的数组。 我在 documentation 上找到了我可以执行数组联合和删除,这很棒,这是文档中给出的示例: var washingtonRef = db
我在 Cloud Firestore 中有一个文档。 “事件”字段的结构如下: { "events" : [ "eventID-1": [ "value1",
我在 Cloud Firestore 中有一个文档。 “事件”字段的结构如下: { "events" : [ "eventID-1": [ "value1",
我是一名优秀的程序员,十分优秀!