【问题标题】:Cloud Function to export new documents from Firestore to GCP bucketCloud Function 将新文档从 Firestore 导出到 GCP 存储桶
【发布时间】:2020-10-18 00:13:38
【问题描述】:

我正在尝试编写一个云函数来仅导出添加到我的“评论”子集合中的新文档。此云功能的触发器是:Cloud Firestore。但是,我的云功能部署通过控制台失败。有人可以帮助我了解我的云功能有什么问题吗?

错误信息:

Deployment failure:

Build failed: /workspace/index.js:26
    }
    ^

SyntaxError: missing ) after argument list
    at new Script (vm.js:83:7)
    at checkScriptSyntax (internal/bootstrap/node.js:620:5)
    at startup (internal/bootstrap/node.js:280:11)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3); Error ID: d984e68f

云功能代码:

const firestore = require('@google-cloud/firestore');
const client = new firestore.v1.FirestoreAdminClient();

const bucket = 'gs://bucket_name'
exports.scheduledFirestoreBackup = (event, context) => {
  const databaseName = client.databasePath(
   // process.env.GCLOUD_PROJECT,
   "fs124",
    '(default)'
  );
return client
    .exportDocuments({
      name: databaseName,
      outputUriPrefix: bucket,
      collectionIds: ['reviews'],
    })
    .onSnapshot()
    .then(snap => {
        snap.forEach(doc => {
      const response = doc.data();
      console.log(doc.data());
      return response;
    }
    
});

控制台 sn-p:

【问题讨论】:

  • 您能否编辑问题,说明您尝试部署时究竟会发生什么? (例如,您收到一条错误消息)
  • 是的,这是@RafaelAlmeida 的错误消息:部署失败:构建失败:/workspace/index.js:26 } ^ SyntaxError: missing )在新脚本的参数列表之后(vm.js:83 :7) 在 checkScriptSyntax (internal/bootstrap/node.js:620:5) 在 bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) 启动时 (internal/bootstrap/node.js:280:11);错误 ID:d984e68f

标签: javascript google-cloud-platform google-cloud-firestore google-cloud-functions


【解决方案1】:

您收到的消息SyntaxError: missing ) after argument list 非常清楚。您缺少then() 的右大括号} 和括号)。它应该看起来像这样:

const firestore = require('@google-cloud/firestore');
const client = new firestore.v1.FirestoreAdminClient();

const bucket = 'gs://bucket_name'
exports.scheduledFirestoreBackup = (event, context) => {
  const databaseName = client.databasePath(
   // process.env.GCLOUD_PROJECT,
   "fs124",
    '(default)'
  );
return client
    .exportDocuments({
      name: databaseName,
      outputUriPrefix: bucket,
      collectionIds: ['reviews'],
    })
    .onSnapshot()
    .then(snap => {
        snap.forEach(doc => {
      const response = doc.data();
      console.log(doc.data());
      return response;
        }); 
    });
};

【讨论】:

  • 感谢您纠正我的粗心错误!我重新部署了该函数,但这次它抛出了一个新错误。我认为这与语法错误无关。错误消息:状态:{ 代码:13 消息:“无法配置触发器提供程序/cloud.firestore/eventTypes/document.write@firestore.googleapis.com (gcf.asia-east2.test_firestore_trigger)” }
  • 错误是关于你的函数的触发器。尝试通过指定here 所述的文档路径来更改触发器,也许可以让它工作?
  • 当您的初始问题得到解决后,我建议您针对此问题提出一个新问题,因为它是不同的。
猜你喜欢
  • 2020-05-05
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 2021-02-09
相关资源
最近更新 更多