Javascript 在云函数firebase中处理来自某个后台函数的意外故障
我在下面有一个可调用的initiatePayment函数,它处理用户从客户端付款时的付款。如果付款成功,则会将新文档记录到我的firestore数据库addNewRecord,然后最终从请求响应返回付款数据Javascript 在云函数firebase中处理来自某个后台函数的意外故障,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我在下面有一个可调用的initiatePayment函数,它处理用户从客户端付款时的付款。如果付款成功,则会将新文档记录到我的firestore数据库addNewRecord,然后最终从请求响应返回付款数据 export const initiatePayment = functions.https.onCall(async (data, context) => { // destructure data argument const { userId } = data; t
export const initiatePayment = functions.https.onCall(async (data, context) => {
// destructure data argument
const { userId } = data;
try {
// 1. Process payment via external API request
const payment = await paymentExternalRequest();
const { paymentData, status } = payment.response;
// 2. If payment processing was a success, record new payment data
if (status === "succeeded") {
addNewRecord(userId, paymentData);
}
// 3. Return paymentData to client
return paymentData;
} catch (error) {
throw new functions.https.HttpsError("cancelled", "Cancelled", error);
}
});
addNewRecord函数:
const addNewRecord = async (userId, paymentData) => {
const newRecordToAdd = { userId, paymentData };
const docRef = admin
.firestore()
.collection("transactions")
.doc(paymentData.id);
try {
const newRecord = await docRef.set({ userId, transaction: newRecordToAdd });
return newRecord;
} catch (error) {
console.log(error);
}
};
我的问题是,如果addNewRecord失败,您如何处理其错误并再次重试该函数以确保其成功?考虑到您的代码,addNewRecord失败不应该有问题。由于函数只会在特定和受控的场景中被调用,在这些场景中,您将拥有正确调用函数所需的参数,因此您应该很好 无论如何,如果它失败一次,它很可能会再次失败,因此,您可以尝试使用队列系统,而不只是尝试重复执行。这样,您将在队列中维护该数据,并在检查和处理错误后再次运行,以确保添加记录 我建议您查看以下有关Javascript排队的文档,我相信这些文档可能会对您有所帮助
如果这些信息对你有帮助,请告诉我 很好的建议。我将开发队列系统,并在测试后返回给您。谢谢,没问题!很高兴听到这有帮助!请考虑投票还是接受它!:下面是尝试将addNewRecord函数用于队列系统的示例。让我知道你的想法。