在数据库上使用事务正在创建并快速删除给定路径上的数据

时间:2017-05-13 10:12:36

标签: firebase firebase-realtime-database

我一直在学习并暂时掌握了firebase。

我正在建立一个博客文章webapp(在官方firebase示例中提供)作为学习示例;

我还要添加自定义通知系统,以便用户在登录时可以查看通知。

每当用户喜欢或评论博客帖子时,都会在帖子的作者uid节点下创建数据路径,如下所示:

 --user-notifications
 ----uid1
 --------postid
 ------------notif: 'notification text'
 ------------postId: postId
 ------------viewed: false
 ------------createdAt: 'some date'
 ----uid2
 --------postid
 ------------notif: 'notification text'
 ------------postId: postId
 ------------viewed: false
 ------------createdAt: 'some date'

我没有为每个喜欢或评论发送单独的通知,而是希望实现facebook的通知类型,其中特定帖子的所有喜欢都在一个通知中。例如: john,kate和其他人喜欢您的帖子 jane,todd和其他人对您的帖子发表了评论

对于上面提到的场景,我使用的交易如下:

 var sendCustomNotification = function(fromUID, recieverUID, userName, actionText, postID){
    const ref = firebase.database().ref("user-notifications/" + recieverUID + "/" + postID);
     if(fromUID !== recieverUID){
         ref.transaction(function(obj){
             if(obj){
                 //if notification is not viewd by the user 
                 if(obj.viewed){
                     obj.notif = userName + actionText;
                     obj.viewed = false; 
                 }else{
                 //if notification is viewd by the user the the user's names gets added into one
                     obj.notif = userName + ' and more ' + actionText;
                 }
             }else{
                ref.set({
                    notif: userName +  '  '' + actionText,
                    statusId: postID,
                    viewed: false,
                    createdAt: formatDate(new Date())
                }); 
             }
             return obj;
         })
     }
 }; 

我在用户评论或喜欢帖子的代码中使用此sendCustomNotification()

现在的问题是:

当用户评论或喜欢调用sendCustomNotification()时,在实时数据库中,节点会按预期创建或更新,但会立即再次删除。

不知道这种行为的原因是什么

0 个答案:

没有答案