Эта функция отлично работала несколько дней назад. Я провел некоторое тестирование, установив время на 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));
});