函数执行耗时60002 ms,状态为:可调用函数的“超时”

时间:2019-10-23 07:27:29

标签: firebase google-cloud-firestore google-cloud-functions

我遇到了Firebase可调用函数和Auth触发器的问题。您可以在下面看到可调用函数。当它正常工作时,通常只需不到1秒即可完成操作,但从昨天开始,它经常会出现超时错误。对于Auth触发器,同样,我只是返回了一个Promise,在这种情况下,它将用户电子邮件写入Firestore。

exports.respondToInvite = functions.https.onCall(async (data, context) => {

    if (!context.auth) {
        throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' +
            'while authenticated.');
    }

    const uid = context.auth.token.uid;

    const inviteId = data.inviteId;
    const groupId = data.groupId;
    const accepted: boolean = data.accepted;

    try {

        const batch = admin.firestore().batch();
        const inviteRef = admin.firestore().collection("invites").doc(inviteId);
        batch.update(inviteRef, {
            userId: uid,
            status: accepted ? "accepted" : "rejected",
        })

        if (accepted) {
            const groupUsersRef = admin.firestore().collection("groups").doc(groupId).collection("users").doc(context.auth.uid);

            batch.set(groupUsersRef, {
                createdAt: admin.firestore.Timestamp.now()
            })

            const userRef = admin.firestore().collection("users").doc(uid);

            batch.set(userRef, {
                "groupId": groupId
            });
        }

        await batch.commit();

        return "invitation accepted";

    } catch (error) {
        console.error(error);
        throw new functions.https.HttpsError('failed-precondition', 'invite response failed',error);
    }
});

编辑: 这是Auth触发功能

exports.newUser = functions.auth.user().onCreate((user) => {
    const userRef = admin.firestore().collection("users").doc(user.uid);
    return userRef.create({
        "email": user.email,
    });
});

0 个答案:

没有答案