Firestore - 参考数据类型 - 我可以在规则中使用它(存在还是获取函数)? - 我可以在JS客户端中使用它吗?

时间:2018-01-11 20:49:27

标签: javascript firebase google-cloud-firestore

我阅读了文档,没有任何内容可以理解您可以使用参考数据类型做什么。

此代码出现在安全规则的文档中:

  match /messages/{messageId} {
    allow read: if exists(/databases/$(database)/documents/rooms/$(roomId)/users/$(request.auth.uid));
  }

我不知道以前的代码,我想知道你是否可以这样做:

  match /messages/{messageId} {
    allow read: if exists(resource.data.user_ref);
  }

  match /messages/{messageId} {
    allow read: if get(resource.data.user_ref).data.name == 'fran';
  }

根据 get exists 函数 的文档,我的感觉是不可能的。提供的路径必须以/ databases开头/ $(数据库)/ documents。 因为我可以看到存储在DB中的引用是这样的:

firestore.googleapis.com/project/x/database/(default)/documents/messages/messageId

我想知道你在JS客户端可以做些什么,比如这样的事情:

  var docRef = db.collection("messages/message1");

  docRef.get().then(function(doc) {
      var userDocRef = db.collection(doc.data().user_ref);
      userDocRef.get().then(function(userDoc) {
           console.log("User data:", userDoc.data());
      });
  });

如果有人能够通过示例更详细地解释这种数据类型,我将非常感激。 提前谢谢。

0 个答案:

没有答案