2017-10-04 9 views
5

FireStoreでNodeJS v8.6.0のリファレンスを持つドキュメントを作成しようとしています。 refDocumentReferenceですが、このFirestore(NodeJS)のドキュメントでDocumentReferenceを設定する

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 }) 

のように、それはNodeJS(管理者)SDKでそれを行うためにとにかくがあり

Error: Argument "data" is not a valid Document. Input object is deeper than 20 levels or contains a cycle.

結果?また


、コードで使用されるパッケージは

"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) 
+0

@NovoLucasサンプルが参照を保存していないようです。それがどこにあるのかを示すことができますか? –

+0

これは、 'DocumentReference'が' set'のinstanceofチェックに失敗するような依存関係の問題であるように、これはうまくいくはずです。 Firestoreをどのようにインポートしていますか?あなたは一度だけそれをインポートしていますか? console.log(ref); ' また、どのノードのバージョンを使用していますか? –

+0

@GilGilbertが投稿を編集しました。チェックしてください。そして、はい、NodeJS v8.6.0で最小限のコードで再現できます。 "require( 'firebase-admin')"を一度、 "admin.initializeApp"を一回。 –

答えて

6

これは、admin SDKとFirestore用の通常のノードSDKとのやりとりのバグです。

@ google-cloud/firestore 0.8.2のアップデートでこの問題を修正する必要があります。

この変更を適用するには、npm updateでプロジェクトを更新することができます。

関連する問題