Функция работала нормально, но теперь я получаю возвращенную функцию неопределенную, ожидаемую ошибку Promise или Value - PullRequest
0 голосов
/ 28 октября 2019

Эта функция отлично работала несколько дней назад. Я провел некоторое тестирование, установив время на every two minutes, и все работает так, как ожидалось. Затем, когда я увидел, что все хорошо, я изменил время на один раз в неделю (0 0 * * 7) и фактически начал работать с моим продуктом. Но в это воскресенье функция просто не сработала.

Я получаю эту ошибку Function returned undefined, expected Promise or Value, за которой следуют многие из них:

Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
    at GoogleAuth.getApplicationDefaultAsync (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:161:19)
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)

Я запутался, потому что раньше все работало просто отлично. Теперь я снова попытался изменить время, чтобы провести некоторое тестирование, и оно больше не работает. Мой редактор был открыт все время, поэтому я отменил все изменения, чтобы посмотреть, случайно ли я что-то изменил, но не было никаких изменений, кроме времени. Что могло произойти?

Это функция:

exports.createRecurringDeals = functions.pubsub.schedule('11 8 28 10 *').timeZone('Asia/Jerusalem').onRun((context) => {
    db.collection('recurring_deals').get().then(querySnapshot => {

        querySnapshot.forEach(bus => {
            const businessListDoc = bus.data();

            if (businessListDoc !== undefined) {

                return db.doc('businesses/' + bus.id).get().then(busDoc => {

                    const business = busDoc.data();

                    if (business !== undefined) {

                        businessListDoc.list.forEach((deal:string) => {
                            return db.doc('deals/' + deal).get().then(snapshot => {
                                const oldDeal = snapshot.data();
                                if (oldDeal !== undefined) {

                                    const promises: any = [];

                                    const startTime = oldDeal.timestamp_start + 604800000;
                                    const endTime = oldDeal.timestamp_end + 604800000;  
                                    const startTimeDst = oldDeal.timestamp_dst_start + 604800000;
                                    const endTimeDst = oldDeal.timestamp_dst_end + 604800000;

                                    const newDealDoc = db.collection('deals').doc();

                                    const newDeal = {
                                        id: newDealDoc.id,
                                        business_ID: business.id,
                                        business_name: business.name,
                                        business_address_text: business.address_text,
                                        business_address_lat: business.address_lat,
                                        business_address_long: business.address_long,
                                        business_phone_number: business.phone_number,
                                        business_image: business.business_photos[0],
                                        business_categories: business.categories,
                                        business_sub_categories: business.sub_categories,
                                        discount: oldDeal.discount,
                                        sitting: oldDeal.sitting,
                                        items: oldDeal.items,
                                        special:oldDeal.special,
                                        timestamp_start: startTime,
                                        timestamp_end: endTime,
                                        timestamp_dst_start: startTimeDst,
                                        timestamp_dst_end: endTimeDst,
                                        gmt: oldDeal.gmt,
                                        amount: oldDeal.amount,
                                        claimers: [],
                                        active: true
                                    };

                                    promises.push(newDealDoc.set(newDeal));

                                    promises.push(db.doc('recurring_deals/' + business.id).update({ list: FieldValue.arrayRemove(oldDeal.id) }));

                                    promises.push(db.doc('recurring_deals/' + business.id).update({ list: FieldValue.arrayUnion(newDeal.id) }));

                                    return Promise.all(promises).catch(err => console.log(err));

                                } else {
                                    return null;
                                };
                            }).catch(err => console.log(err));
                        });
                        return null;
                    } else {
                        return null;
                    };
                }).catch(err => console.log(err));
            } else {
                return null;
            };
        });
        return null;
    }).catch(err => console.log(err));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...