Приращение Angularfire - PullRequest
       44

Приращение Angularfire

0 голосов
/ 03 сентября 2018

У меня проблемы с увеличением количества постов "лайков". Вот что я имею сейчас:

addLike(pid, uid) {
    const data = {
      uid: uid,
    };
    this.afs.doc('posts/' + pid + '/likes/' + uid).set(data)
 .then(() => console.log('post ', pid, ' liked by user ', uid));

  const totalLikes = {
         count : 0 
        };
        const likeRef = this.afs.collection('posts').doc(pid);
         .query.ref.transaction((count => {
           if (count === null) {
               return count = 1;
            } else {
               return count + 1;
            }
        }))
        }

это, очевидно, броски и ошибки.

Моя цель - «полюбить» сообщение и увеличить «счетчик» в другом месте. Возможно как поле каждого пида?

Что мне здесь не хватает? Я уверен, что мой путь правильный ..

Заранее спасибо

1 Ответ

0 голосов
/ 04 сентября 2018

Вы должны использовать API-интерфейс базы данных Firebase Realtime для транзакций в облачном хранилище. Хотя обе базы данных являются частью Firebase, они совершенно разные, и вы не можете использовать API друг от друга.

Чтобы узнать больше о том, как выполнять транзакции в Cloud Firestore, см. обновление данных транзакциями в документации.

Это будет выглядеть примерно так:

return db.runTransaction(function(transaction) {
    // This code may get re-run multiple times if there are conflicts.
    return transaction.get(likeRef).then(function(likeDoc) {
        if (!likeDoc.exists) {
            throw "Document does not exist!";
        }

        var newCount = (likeDoc.data().count || 0) + 1;
        transaction.update(likeDoc, { count: newCount });
    });
}).then(function() {
    console.log("Transaction successfully committed!");
}).catch(function(error) {
    console.log("Transaction failed: ", error);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...