尝试在node.js中使用google云功能时,admin.firestore不是一个功能

时间:2017-10-11 03:46:12

标签: node.js firebase google-cloud-functions google-cloud-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

4 个答案:

答案 0 :(得分:13)

我能够重现错误并强制解决方案。我对npm一无所知,也不能完整解释为什么这个解决方案有效。

我原来的package.json包含:

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

作为recommended in the documentation,我在函数文件夹中运行了这两个命令:

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

我也尝试过:

npm install --save firebase-admin
npm upgrade

我反复收到以下错误消息:

+-- UNMET PEER DEPENDENCY firebase-admin@4.2.1
npm WARN firebase-functions@0.7.1 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();编译没有错误。

答案 1 :(得分:1)

functions.firestore应该是functions.firestore()

答案 2 :(得分:0)

尝试一下

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

    });

答案 3 :(得分:-1)

要在你的file.js(异步方法)中解决:

const getFirestore = () => admin.firestore()

例如:

 getFirestore()
  .collection(`mailchimp-users`)
  .doc(uid)
    .set(profile)
      .then(() => res.redirect(MAILCHIMP_AUTH_SUCCESS_URL))
      .catch((error) => res.json({error}))