假设有两个文件
/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) 我正在尝试使用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)
虽然ref是DocumentReference,但结果
错误:参数"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)