Запускать функцию, когда новый документ не работает - PullRequest
0 голосов
/ 09 июля 2019

Я пробовал пример счетчика приращений (https://github.com/firebase/functions-samples/tree/master/child-count) с облачными функциями, который ссылается на базу данных реального времени, но не на Firebase Firestore.

Я слежу за документом Firestore и попробовал некоторые изменения. Все еще сталкиваюсь с проблемойи не могу запустить этот код для нового документа firestore. Я пишу облачную функцию впервые, и я не уверен, что написал это правильно.

   exports.countlikechange = functions.database.ref('/posts/{postid}/likes/{likeid}').onWrite(
async (change) => {
  const collectionRef = change.after.ref.parent;
  const countRef = collectionRef.parent.child('likes_count');

  let increment;
  if (change.after.exists() && !change.before.exists()) {
    increment = 1;
  } else if (!change.after.exists() && change.before.exists()) {
    increment = -1;
  } else {
    return null;
  }

  // Return the promise from countRef.transaction() so our function
  // waits for this async event to complete before it exits.
  await countRef.transaction((current) => {
    return (current || 0) + increment;
  });
  console.log('Counter updated.');
  return null;
});

Я хочу обновить счетчик в родительском документе.

1 Ответ

1 голос
/ 09 июля 2019

Вам следует ознакомиться с документацией для триггеров Firestore . То, что вы пишете - это триггер базы данных в реальном времени, потому что объявление функции - functions.database. Вместо этого вы захотите использовать functions.firestore. Вы также используете API-интерфейсы баз данных реального времени вместо API-интерфейсов Firestore. Ваше окончательное решение, использующее Firestore, будет выглядеть почти совсем не так, как сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...