web-dev-qa-db-ja.com

node.jsでGoogleクラウド関数を使用しようとすると、admin.firestoreが関数にならない

これは、node.js index.jsファイルのヘッダーです。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var db = admin.firestore();

これは、firestoreの変更をリッスンするnode.js関数です。

exports.myFoo = functions.firestore
  .document('foo/{bar}')
  .onWrite(event => {
    // do stuff
}

これはpackage.jsonファイルにあります:

  "dependencies": {
    "firebase-admin": "^5-.4.2",
    "firebase-functions": "^0.7.1",
    "firestore": "^1.1.6"
  },

「firebase deploy」コマンドを実行しようとすると、次のエラーが発生します。

エラー:関数トリガーの解析中にエラーが発生しました。
TypeError:admin.firestoreは関数ではありません

askFirebase

14
ninj4 n00b

エラーを再現して、解決策を総当たりすることができました。 npmについてはあまり知りませんが、このソリューションが機能した理由を完全に説明することはできません。

私の元の_package.json_に含まれるもの:

_  "dependencies": {
    ...
    "firebase-admin": "^4.2.1",
    "firebase-functions": "^0.7.1",
    ...
  },
_

ドキュメントで推奨 のように、functionsフォルダーで次の2つのコマンドを実行しました。

_npm install -g firebase-tools
npm install firebase-functions@latest --save
_

私も試しました:

_npm install --save firebase-admin
npm upgrade
_

次のエラーメッセージが繰り返し表示されます。

_+-- UNMET PEER DEPENDENCY [email protected]
npm WARN [email protected] requires a peer of firebase-admin@~5.4.2 but none was installed.
_

_firebase-admin_を更新する必要があると考えましたが、更新できませんでした。だから私はこの行を削除するために依存関係ファイルを編集しました:

_"firebase-admin": "^4.2.1"
_

次に_npm install --save firebase-admin_を再度実行しました。これにより、_package.json_にはエラーなくコンパイルされたバージョン_"firebase-admin": "^5.4.2"_およびvar db = admin.firestore();が含まれていました。

14
Bob Snyder

_functions.firestore_はfunctions.firestore()であるはずです

1
Martin

これを試して

const getReceiverDataPromise = admin.firestore().doc('users/' + receiverUID).get();
const getSenderDataPromise = admin.firestore().doc('users/' + senderUID).get();

return Promise.all([getReceiverDataPromise, getSenderDataPromise]).then(results => {

        const receiver = results[0].data();
        console.log("receiver: ", receiver);

        const sender = results[1].data();
        console.log("sender: ", sender);

    });
0
B. Chandresh