Firebase - 使用事务切换值

时间:2017-12-03 18:52:12

标签: javascript firebase firebase-realtime-database

我想让用户喜欢一个项目。我将这些项目存储在2个位置,因此我必须同时更新它们。在查看firebase文档后,使用事务似乎是最佳选择。  。

切换收藏状态的功能:

function toggleFavorite (projectReference, uid) {
    projectReference.transaction(function(project) {
        console.log('Before-Favorites :' + project.favoriteCount);
        if (project.favorites && project.favorites[uid]) {
          project.favoriteCount--;
          project.favorites[uid] = null;
        } else {
            project.favoriteCount++;
            if(!project.favorites) {
                project.favorites= {};
            }
            project.favorites[uid] = true;
        }
        console.log(' After-Favorites :' + project.favoriteCount);
        return project;
      });
};

将eventListeners添加到项目的函数:

function AddToFavorite (uid, authorId) {
    const favoriteList = document.querySelectorAll('.btnFavorite');
    for(var i = 0; i<favoriteList.length; i++) {
        favoriteList[i].addEventListener('click', function(event) {
            const projectId = this.dataset.id;
            console.log(projectId);
            const globalProjectRef = firebase.database().ref('/projects/' + projectId);
            const userProjectRef = firebase.database().ref('/user-projects/' + authorId + '/' + projectId);
            toggleFavorite(globalProjectRef,uid);
            toggleFavorite(userProjectRef,uid);
        });
    }
}

我想将当前用户的uid存储在项目位置的“收藏夹”节点下。

当我想存储数据时,我可以看到它出现在数据库中,但在即时之后将其删除。接下来我在控制台中得到一个错误,我的项目对象为null。 解决这个问题的最佳方法是什么?

0 个答案:

没有答案