是否存在解决方法来解决Cloud Functions中的错误“错误:4 DEADLINE_EXCEEDED:截止日期已超过”

时间:2019-10-29 01:20:39

标签: node.js firebase google-cloud-firestore google-cloud-functions

我正在使用Cloud Functions的批处理写入Firestore。 那时,显示错误:4 DEADLINE_EXCEEDED:超过最后期限,并且写入被中断。

看完这个问题后,Error: 4 DEADLINE_EXCEEDED: Deadline Exceeded at Object.exports.createStatusError - GCP我知道错误的内容已达到写配额,但是我不知道如何处理该配额。如果您知道如何解决,请告诉我。

这是我的代码。

exports.batchTest = functions.region('asia-northeast1').pubsub.schedule('every 60 minutes').onRun(async (snapshot, context) => {


    let db = admin.firestore();
    // Get a new write batch
    let batch = db.batch();

    const userRef = db.collection('user');
    const userQs = await userRef.get();

    userQs.forEach(userDocs => {
        let userId = userDocs.id;
        let likeRef = db.collection('like').doc(userId).collection('like').get().then(docs => {

            if (docs.exists) {
                const subLikeRef = db.collection('like').doc(userId).collection('like').doc(docs.id);
                batch.delete(subLikeRef)
                    .then(function () {
                        console.log("success");
                        return true;
                    })
                    .catch(function (error) {
                        console.error("Error", error);
                        return true;
                    });

            }
            return null;
        });


    });




    // Commit the batch
    return batch.commit().then(function () {
        // ...
        return null;
    });


}
);

1 个答案:

答案 0 :(得分:0)

此错误与您提出的请求时间过长有关。

为了避免这种情况,您可以修改逻辑以在每次触发函数时写入较小的数据批处理,也可以尝试增加超时值。

您可以查看this firebase documentationthis document来增加超时值。