我有以下firebase云功能:
export const setFlightAlert = functions.database.ref('/trips/{pushId}/milestones').onCreate(async (snapshot) => {
let milestones: Milestone[] = [];
for (let milestone of snapshot.val()) {
let alert_id = 0;
if (+milestone.type.key === MilestoneTypes.departed_airport) {
const request = await setAlertId(milestone);
alert_id = request;
milestone = {
...milestone,
alert_id: alert_id,
ident: milestone.airline.name + milestone.flight_number
};
} else if (+milestone.type.key === MilestoneTypes.arrived_airport) {
milestone = {
...milestone,
alert_id: alert_id,
ident: milestone.airline.name + milestone.flight_number
};
}
milestones = [...milestones, milestone];
}
return snapshot.ref.set(milestones)
})
async function setAlertId(milestone: Milestone) {
let alert_id;
const data = new FormData();
data.append('alert_id', 0);
data.append('ident', `${milestone.airline.name}${milestone.flight_number}`);
data.append('origin', milestone.airport.icao);
data.append('date_start', new Date(milestone.flight_time).getTime() / 1000);
data.append('date_end', new Date(milestone.flight_time).getTime() / 1000);
data.append('chennels', '{16 e_filed e_departure e_arrival e_diverted e_cancelled}');
alert_id = await axios.post<{SetAlertResult: number}>(urls.setAlert, data, {
headers: {...headers, ...data.getHeaders()},
withCredentials: true
})
return alert_id.data.SetAlertResult;
}
当该函数被激发时,它应该从对setAlertid()
的异步await调用中获取alert_ad的值。然而,当运行该程序时,我在云函数日志中发现一个错误,说明它是未定义的。我不知道为什么会这样。
Error: Reference.set failed: First argument contains undefined in property 'trips.-LZztKpsQxr_9p3p4-D3.milestones.0.alert_id'
at validateFirebaseData (/user_code/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.node.cjs.js:1442:15)
at /user_code/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.node.cjs.js:1488:13
at Object.forEach (/user_code/node_modules/firebase-admin/node_modules/@firebase/util/dist/index.node.cjs.js:846:13)
at validateFirebaseData (/user_code/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.node.cjs.js:1471:14)
at /user_code/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.node.cjs.js:1488:13
at Object.forEach (/user_code/node_modules/firebase-admin/node_modules/@firebase/util/dist/index.node.cjs.js:846:13)
at validateFirebaseData (/user_code/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.node.cjs.js:1471:14)
at validateFirebaseDataArg (/user_code/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.node.cjs.js:1430:5)
at Reference.set (/user_code/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.node.cjs.js:14026:9)
at Object.<anonymous> (/user_code/lib/index.js:46:70)
我如何测试或记录这一点,以确保async/await实际上获得了一个值?
与任何JavaScript环境一样,您可以使用console.log()
记录值。它们最终将在Firebase控制台中可见。
还要考虑进行本地测试,以便更容易地进行测试和调试。
在index.js,我有: 我从以下地方复制粘贴了代码:https://firebase.google.com/docs/functions/get-started 不知何故,当我使用 我得到: 错误:分析函数触发器时出错。ReferenceError:未在对象上定义函数。(/home/[USERNAME HERE]/functions/index.js:1:87)在模块中_在对象处编译(modu
所以我一直很高兴地使用async/await,因为Firebase云函数支持节点8。不过我有一件事要做。当使用可调用函数时,会告诉您必须在函数中返回promise,否则它将无法正常工作。当使用原始promise时,我很清楚如何使用它: 但是现在,随着异步等待,我不确定如何返回这个“promise链”: 有人知道吗?
我对Firebase/Firestore/Cloud函数相当陌生,一直在尝试一个小项目,在这个项目中,客户端应用程序调用Firebase Cloud函数来生成一些随机键(随机数),将它们添加到Firestore,成功编写后,将这些键返回到客户端应用程序。有点像随机数发生器。 客户端正确调用该函数(根据Firebase控制台),确实生成密钥,检查它们是否存在于Fi还原中,如果不添加它们。所有的工作直
问题内容: 我有一个计算税金的函数。 我不明白为什么它不能停止递归。 问题答案: 在您的职能部门中: 您没有从函数或设置中返回值。当您不返回任何内容时,返回值为。 也许,您想要这样:
我真的需要温习一下我的异步等待和promise。我想要一些建议。 我正在对firebase firestore进行异步函数调用。函数应根据单个输入参数返回字符串。 该功能适用于1-1用户聊天。该功能是创建聊天/查找现有聊天,并返回其ID。 现在,我得到的作为返回值的和不知道为什么。除了返回之外,该函数还能正常工作。 我有两个功能。一个是React类组件生命周期方法,另一个是我的firebase异步