在Firestore(NodeJS)文档中设置DocumentReference

我正在尝试使用NodeJS v8.6.0创build一个带有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 }) 

虽然ref是一个DocumentReference ,但它的结果

错误:参数“数据”不是有效的文档。 input对象比20级更深或包含一个循环。

有没有在NodeJS(pipe理员)SDK上做到这一点?


另外,代码中使用的包是

 "firebase-admin": "^5.4.1" 

 console.log(ref) 

输出

 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: '0.8.1', author: 'Google Inc.', description: 'Firestore Client Library for Node.js', contributors: [Array], main: './src/index.js', files: [Array], repository: 'googleapis/nodejs-firestore', keywords: [Array], dependencies: [Object], devDependencies: [Object], scripts: [Object], license: 'Apache-2.0', engines: [Object], types: './types/firestore.d.ts' }, projectId: 'MY_PROJECT', projectIdRequired: true, Promise: [Function: Promise], grpcMetadata: Metadata { _internal_repr: [Object] }, maxRetries: undefined, userAgent: 'gcloud-node-firestore/0.8.1', activeServiceMap_: Map {}, protos: {}, _preferTransactions: false, _lastSuccessfulRequest: null, api: { Firestore: [Object] }, _referencePath: ResourcePath { segments: [], _formattedName: undefined, _projectId: 'dewpod-dev', _databaseId: '(default)' }, app: FirebaseApp { firebaseInternals_: [Object], services_: [Object], isDeleted_: false, name_: '[DEFAULT]', options_: [Object], database: [Function: bound ], auth: [Function: bound ], messaging: [Function: bound ], storage: [Function: bound ], firestore: [Function: bound ], INTERNAL: [Object] }, INTERNAL: FirestoreInternals {} }, _referencePath: ResourcePath { segments: [ 'orgs', 'fooOrg' ], _formattedName: undefined, _projectId: 'dewpod-dev', _databaseId: '(default)' } } 

和完整的错误信息是

 /SOME_PATH/node_modules/@google-cloud/firestore/src/validate.js:86 throw new Error(message); ^ Error: Argument "data" is not a valid Document. Input object is deeper than 20 levels or contains a cycle. at Object.exports.(anonymous function) [as isDocument] (/SOME_PATH/node_modules/@google-cloud/firestore/src/validate.js:86:15) at WriteBatch.set (/SOME_PATH/node_modules/@google-cloud/firestore/src/write-batch.js:251:14) at DocumentReference.set (/SOME_PATH/node_modules/@google-cloud/firestore/src/reference.js:416:8) at Object.<anonymous> (/SOME_PATH/fstest.js:17:20) at Module._compile (module.js:624:30) at Object.Module._extensions..js (module.js:635:10) at Module.load (module.js:545:32) at tryModuleLoad (module.js:508:12) at Function.Module._load (module.js:500:3) at Function.Module.runMain (module.js:665:10) 

这是admin SDK和Firestore的常规节点SDK之间的交互中的一个错误。

更新到@谷歌云/ firestore 0.8.2应该解决这个问题。

您可以使用npm update来更新您的项目以获取此更改。