我想让用户喜欢一个项目。我将这些项目存储在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。 解决这个问题的最佳方法是什么?