带有Firestore错误的云功能"截止日期已超过"

Kon*_*rad 5 node.js firebase firebase-authentication google-cloud-functions google-cloud-firestore

我正在测试新的火店,但我总是遇到同样的问题,它告诉我一些关于Deadline超出的问题

{ Error: Deadline Exceeded
    at /user_code/node_modules/firebase-admin/node_modules/grpc/src/node/src/client.js:554:15
  code: 16,
  metadata: Metadata { _internal_repr: {} },
  note: 'Exception occurred in retry method that was not classified as transient' }
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码,看起来很好(当我将其部署到Firebase时可以使用)

const functions = require('firebase-functions');

const admin = require('firebase-admin');
var serviceAccount = require("./xxxxxxxx-firebase-adminsdk.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://xxxxxxxxx-xxxx.firebaseio.com"
});

exports.registerUser = functions.auth.user().onCreate(event => {
  admin.firestore().collection('users').doc(event.data.uid).set({
    name: 'Test User',
    country: 'USA'
  }).catch(error => {
    console.log(error);
  })
});
Run Code Online (Sandbox Code Playgroud)

它还显示此消息函数返回undefined,预期Promise或value

Dou*_*son 14

使用云功能触发器,您需要返回在工作完成时解决的承诺.文档上的set()方法返回一个promise,因此您应该返回它以让Cloud Functions知道什么时候可以安全地清理该函数:

exports.registerUser = functions.auth.user().onCreate(event => {
  return admin.firestore().collection('users').doc(event.data.uid).set(...)
});
Run Code Online (Sandbox Code Playgroud)

  • 我似乎在使用“async”函数作为 Firebase 函数的“onRun”参数时遇到了这个问题。如果“async”函数总是返回一个承诺,您能否解释一下为什么这个错误仍然发生? (2认同)