小编Ray*_*kai的帖子

在安全规则中使用引用

假设有两个文件

/orgs/foo
/users/alice
Run Code Online (Sandbox Code Playgroud)

/users/alice具有基准型场org其引用/orgs/foo.

/orgs/foo应该是可以访问的request.auth.uid == 'alice'.我怎样才能做到这一点?

我想这是这样的,但我无法弄明白.换句话说,我如何获取引用文档的ID?

function isOrgMember(orgId) {
  return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;
}

match /orgs/{orgId} {
  allow read: isOrgMember(orgId);
}
Run Code Online (Sandbox Code Playgroud)

firebase firebase-security google-cloud-firestore

6
推荐指数
1
解决办法
201
查看次数

在Firestore上的Document中设置DocumentReference(NodeJS)

我正在尝试使用NodeJS v8.6.0创建一个带有Firestore参考的文档.像这样

const admin = require('firebase-admin')
admin.initializeApp({ credential: MY_CREDENTIAL, databaseURL: MY_DB_URL })
const db = admin.firestore()

const ref = db.doc('foo/someDoc')
db.doc('bar/targetDoc').set({ link: ref })
Run Code Online (Sandbox Code Playgroud)

虽然refDocumentReference,但结果

错误:参数"data"不是有效的Document.输入对象深度超过20个级别或包含一个循环.

无论如何在NodeJS(Admin)SDK上执行此操作?


另外,代码中使用的包是

"firebase-admin": "^5.4.1"
Run Code Online (Sandbox Code Playgroud)

console.log(ref)
Run Code Online (Sandbox Code Playgroud)

输出

DocumentReference {
  _firestore: 
   Firestore {
     makeAuthenticatedRequest: 
      { [Function: makeAuthenticatedRequest]
        getCredentials: [Function: bound getCredentials],
        authClient: [Object] },
     authClient: 
      Auth {
        authClientPromise: null,
        authClient: null,
        config: [Object],
        environment: {} },
     baseUrl: undefined,
     getCredentials: [Function: bound getCredentials],
     globalInterceptors: [],
     interceptors: [],
     packageJson: 
      { name: '@google-cloud/firestore',
        version: …
Run Code Online (Sandbox Code Playgroud)

node.js firebase google-cloud-firestore

5
推荐指数
1
解决办法
2161
查看次数