Firebase / Cloud Firestore /规则设置(读取,写入,更新,删除)

时间:2019-10-29 20:09:17

标签: firebase google-cloud-platform google-cloud-firestore firebase-security

尝试配置Cloud Firestore规则时遇到麻烦。

我正在尝试访问文档内部,集合内部的字段...像这样

List<Data> list = ParseData( "{1, 'hello', 1, 3}, {2, 'othello', 0, 2}" );

“ creatorId”是database / products / {productId}

中的一个字段

我想区分用户,只允许他们更新和删除他们在database / products / ...中创建的文件,但我也希望他们能够查看/ products /中的所有文档。 ...

我为fetchAndSetProducts设置的布尔值是我希望用来过滤某些信息应用程序方面的内容,例如仅允许使用查看某些产品(包含其userId的产品)。我不确定是否还需要在“产品”上设置索引,但是我已经做过以防万一。

因此,我想锁定用户未创建的所有文件。

我认为应该是这样的:

async componentDidMount(){
    const url = "http://www.mocky.io/v2/5db88c413b00004f0b35f1f1";
    const response = await fetch(url);
    const data = await response.json();
    this.setState({produto: data.suggestions[0], loading_produto: false})
    this.setState({alternativas: data.choices, loading_alternativas: false})
    this.setState({atributos: data.suggestions[0].product_data.attributes, loading_atributos: false})
    console.log(this.state.produto.product_data.title);
}

无效,并且我的应用端代码也无法按用户过滤。

1 个答案:

答案 0 :(得分:1)

如果要匹配产品集合中的所有文档,它将看起来像这样:

service cloud.firestore {
  match /databases/{database}/documents {
    match /products/{productId} {
      allow read: if resource.data.creatorId == request.auth.uid;
    }
  }
}

请注意,我从第二场比赛的末尾删除了“文档”。