Firebase Node.js тогда не является функцией - PullRequest
0 голосов
/ 07 октября 2018

У меня есть облачная функция, которую я вызываю, и получаю эту ошибку: Не знаете, что делать?Я попытался удалить оператор return и вернуть Primise.all () и вернуть batch.commit (), и все не удалось. Мне также пришлось сделать eventsRef var вместо const, не знаю почему.

Ошибка:

TypeError: eventsRef.where(...).then is not a function
    at exports.deleteOldEventLocations.functions.https.onRequest (/user_code/index.js:235:6)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /var/tmp/worker/worker.js:689:7
    at /var/tmp/worker/worker.js:673:9
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

Функция:

exports.deleteOldEventLocations = functions.https.onRequest((req, res) => {
  const db = admin.firestore();
  var eventsRef = db.collection('events');
  const currentDate = new Date();
  const endDate = new Date(currentDate.getTime + 2 * 60 * 60 * 1000);
  const batch = db.batch();
  const fieldValue = db.FieldValue;

  var query = eventsRef.where('startDate', '<', endDate)
    .then(snapshot => {
        snapshot.forEach(doc => {
            console.log(doc.id, '=>', doc.data());
            let eventRef = eventsRef.doc(doc.id);
            batch.update(eventRef, { g: fieldValue.delete() });
            batch.update(eventRef, { l: fieldValue.delete() });
        });
        batch.commit();
        return;
    })
    .catch(err => {
        console.log('Error getting documents', err);
    });
});

1 Ответ

0 голосов
/ 07 октября 2018

Вам не хватает get().Итак:

var query = eventsRef.where('startDate', '<', endDate)
  .get()
  .then(snapshot => {
    snapshot.forEach(doc => {
      ...

Также см. Документацию по получению нескольких документов из коллекции .

...