【发布时间】:2020-06-19 23:23:07
【问题描述】:
我无法从文档中获取数据并使用该文档中的单个字段作为我的调度 Cloud Function 的参数,首先我尝试获取文档,然后调用 getData() 函数并使用该变量从中调用 .data 并且我正在等待调用 .get() ,但我仍然收到此错误。
“Promise>”类型上不存在属性“数据”。
我不能打电话给await getData();,因为我收到了这个错误
仅当 'module' 选项设置为 'esnext' 或 'system' 并且 'target' 选项设置为 'es2017' 或更高版本时,才允许使用顶级 'await' 表达式。
有什么办法吗?我需要首先获取包含我将运行计划函数的月份中的哪一天的数据。
这是我的代码:
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
/// Get the config data for schedule time and debt payment
async function getData() {
return await admin.firestore().doc("neighbors/0000_admin").get();
}
const configData = getData();
/// Updates the debt for each neighbor on a specific day of each month
export const debtUpdatePerMonth = functions.pubsub
.schedule(`${configData?.data()?.day_of_month_to_pay} of month 06:00`)
.onRun(async (context) => {
return admin
.firestore()
.collection("neighbors")
.get()
.then((snapshot) => {
snapshot.forEach((doc) => {
return doc.ref.update({
debt: doc.data()?.debt + configData?.data()?.monthly_pay,
});
});
});
});
提前致谢
【问题讨论】:
-
您的代码中有两个对
getData()的调用,一个在顶层,一个在函数内部。他们都试图分配给同一个命名变量。这让我很困惑。如图所示,错误消息不可能指的是其中任何一个。你能解释一下为什么需要两次调用,尤其是函数外顶层的调用吗? -
对不起,Doug,这是我的错,我的日程安排中的 getData() 调用是第一次尝试,我忘了删除它,实际上我日程安排中的调用确实有效,我可以获取数据我需要那里,但是因为我得到两条信息,一条在
debt: doc.data()?.debt + configData?.data()?.monthly_pay,中使用,另一条应该用作一个月中的一天:`.schedule(${configData?.data()?.day_of_month_to_pay} of month 06:00)`,这就是我为什么想在schedule之前调用,忘记删了里面的,我现在编辑一下
标签: typescript firebase google-cloud-firestore google-cloud-functions