Javascript 如何终止不需要返回任何内容的Firebase可调用函数?

Javascript 如何终止不需要返回任何内容的Firebase可调用函数?,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,这个例子: 增加VIEWCOUNT集合的函数 无需返回任何内容。另外,无需等待调用firestore…update()调用 export const onCall_updateViewCount = functions.https.onCall((data, context) => { const { id } = data; const VIEWCOUNT = COLLECTIONS.VIEWCOUNT; admin.firestore().collection(VIEW

这个例子:

增加
VIEWCOUNT
集合的函数

无需
返回任何内容。另外,无需等待
调用
firestore…update()
调用

export const onCall_updateViewCount = functions.https.onCall((data, context) => {

  const { id } = data;
  const VIEWCOUNT = COLLECTIONS.VIEWCOUNT;

  admin.firestore().collection(VIEWCOUNT).doc(VIEWCOUNT).update({
    [id]: admin.firestore.FieldValue.increment(1)
  });

  return;
});
终止此功能的正确方法是什么?以void
return结束是否可以


是作废
返回必要吗?如果我不返回任何内容,它会一直运行到超时吗?就像它在
onRequest
函数上所做的那样?

您的函数必须返回一个承诺,该承诺在所有异步工作完成时得到解决。您不能提前返回-您必须等待完成,否则云函数可能会强制关闭该函数,并且它将永远不会完成

特别是对于可调用函数,还必须返回一个承诺,该承诺与要序列化到客户端应用程序的数据进行解析。与其尝试序列化某些未知的promise结果,还不如具体说明这一点

export const onCall_updateViewCount = functions.https.onCall((data, context) => {

  const { id } = data;
  const VIEWCOUNT = COLLECTIONS.VIEWCOUNT;

  return admin.firestore().collection(VIEWCOUNT).doc(VIEWCOUNT).update({
    [id]: admin.firestore.FieldValue.increment(1)
  })
  .then(() => {
    return { result: "OK" };
  });
});

请务必查看。

您的函数必须返回一个承诺,该承诺在所有异步工作完成时解决。您不能提前返回-您必须等待完成,否则云函数可能会强制关闭该函数,并且它将永远不会完成

特别是对于可调用函数,还必须返回一个承诺,该承诺与要序列化到客户端应用程序的数据进行解析。与其尝试序列化某些未知的promise结果,还不如具体说明这一点

export const onCall_updateViewCount = functions.https.onCall((data, context) => {

  const { id } = data;
  const VIEWCOUNT = COLLECTIONS.VIEWCOUNT;

  return admin.firestore().collection(VIEWCOUNT).doc(VIEWCOUNT).update({
    [id]: admin.firestore.FieldValue.increment(1)
  })
  .then(() => {
    return { result: "OK" };
  });
});

请务必查看。

谢谢。我知道我的函数可能会在
update()
承诺完成之前终止(无论成功与否),我将无法对结果执行任何操作。但函数可能在承诺完成之前关闭这一事实不应该阻止
update()
调用完成它的工作,对吗?考虑到电话已经打了。如果进程终止,
firebase admin
是否会发出某种
cancel
触发器?我知道不等待结果可能不是一个好的做法,但我想知道在这种情况下它的行为。当云函数终止你的函数时,它可能会阻止你的更新完成。这就是为什么你需要回报一个承诺——告诉它什么时候完成并且可以安全地清理。谢谢。我知道我的函数可能会在
update()
承诺完成之前终止(无论成功与否),我将无法对结果执行任何操作。但函数可能在承诺完成之前关闭这一事实不应该阻止
update()
调用完成它的工作,对吗?考虑到电话已经打了。如果进程终止,
firebase admin
是否会发出某种
cancel
触发器?我知道不等待结果可能不是一个好的做法,但我想知道在这种情况下它的行为。当云函数终止你的函数时,它可能会阻止你的更新完成。这就是为什么你需要回报一个承诺——告诉它什么时候完成,什么时候可以安全地清理。