从Firebase onCall云功能读取Firestore中的文档

Lui*_*nto 4 javascript google-cloud-functions

我正在使用onCallFirebase云功能来检查Firestore集合中是否存在文档。如果该文档存在,那么我想继续(如果它仍然不存在),而不是我想要创建它。

我已经尝试了许多不同的方法,但是总是遇到错误,所以现在我要逐步进行操作,并简单地获取我知道存在于集合中的文件的内容。该集合称为“ timeline_state”,文档称为“ 888”

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

exports.afterLogin = functions.https.onCall((data, context) => {
  console.log("afterLogin STARTING");

  const getDocument = admin.firestore().collection('timeline_state').doc('888').get();

  return getDocument.then(doc => {
    console.log(doc);
    return doc
  }).catch(error => {
    console.log(error)
    return error;
 })
})
Run Code Online (Sandbox Code Playgroud)

当我从代码中调用它时,我得到一个空data对象,并且在Firebase函数日志中,我看到该函数正在运行,但出现错误:

/user_code/node_modules/firebase-admin/node_modules/gaxios/build/src/index.js:28
async function request(opts) {
      ^^^^^^^^

SyntaxError: Unexpected token function
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/user_code/node_modules/firebase-admin/node_modules/gcp-metadata/build/src/index.js:17:18)
Run Code Online (Sandbox Code Playgroud)

关于我在做什么错的任何想法,也许我该如何解决?谢谢!

Lui*_*nto 8

由于得到了一个提示,我的解决方案是将节点引擎更新为8。

为此,我将以下内容添加到package.json中

"engines": {
  "node": "8"
}
Run Code Online (Sandbox Code Playgroud)

也许这对其他人有帮助...;)

  • 在过去的一个小时里,这使我发疯,谢谢您恢复我的理智。 (2认同)