Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确地从函数中返回?_Javascript_Ios_Push Notification_Atom Editor - Fatal编程技术网

Javascript 如何正确地从函数中返回?

Javascript 如何正确地从函数中返回?,javascript,ios,push-notification,atom-editor,Javascript,Ios,Push Notification,Atom Editor,所以我的推送通知工作正常。我遇到的一个大问题是如果用户喜欢/评论自己的照片,他们将收到自己的推送通知。我不知道如何解决这个问题。例如,假设我喜欢我自己的照片,如果我回复我帖子上的评论,我会收到推送通知“Clint喜欢你的帖子”,也就是我,与评论相同。“克林特对你的帖子发表了评论” 下面是我通过Atom编写的通知代码 exports.observeComments = functions.database.ref('/comments/{postId}/{commentId}').onCreat

所以我的推送通知工作正常。我遇到的一个大问题是如果用户喜欢/评论自己的照片,他们将收到自己的推送通知。我不知道如何解决这个问题。例如,假设我喜欢我自己的照片,如果我回复我帖子上的评论,我会收到推送通知“Clint喜欢你的帖子”,也就是我,与评论相同。“克林特对你的帖子发表了评论”

下面是我通过Atom编写的通知代码


exports.observeComments = functions.database.ref('/comments/{postId}/{commentId}').onCreate((snapshot, event) => {
     var postId = event.params.postId;
     var commentId = event.params.commentId;

     return admin.database().ref('/comments/' + postId + '/' + commentId).once('value', snapshot => {
       var comment = snapshot.val();
       var commentUid = comment.uid;

       return admin.database().ref('/users/' + commentUid).once('value', snapshot => {
         var commentingUser = snapshot.val();
         var username = commentingUser.username;

         return admin.database().ref('/posts/' + postId).once('value', snapshot => {
           var post = snapshot.val();
           var postOwnerUid = post.ownerUid;

           return admin.database().ref('/users/' + postOwnerUid).once('value', snapshot => {
             var postOwner = snapshot.val();

             var payload = {
               notification: {
                 body: username + ' commented on your post '

               }
             };

             admin.messaging().sendToDevice(postOwner.fcmToken, payload)
             .then((response) => {
               // Response is a message ID string.
               console.log('Successfully sent message:', response);
               return response;
             })
             .catch((error) => {
               console.log('Error sending message:', error);
               throw new Error('Error sending message:', error);
             });
           })
         })
       })
     })
   })


exports.observeLikes = functions.database.ref('/user-likes/{uid}/{postId}').onCreate((snapshot, event) => {
     var uid = event.params.uid;
     var postId = event.params.postId;

     return admin.database().ref('/users/' + uid).once('value', snapshot => {
       var userThatLikedPost = snapshot.val();

       return admin.database().ref('/posts/' + postId).once('value', snapshot => {
         var post = snapshot.val();

         return admin.database().ref('/users/' + post.ownerUid).once('value', snapshot => {
           var postOwner = snapshot.val();

           var payload = {
             notification: {
               body: userThatLikedPost.username + ' liked your post '
             }
           };

           admin.messaging().sendToDevice(postOwner.fcmToken, payload)
           .then((response) => {
             // Response is a message ID string.
             console.log('Successfully sent message:', response);
             return response;
           })
           .catch((error) => {
             console.log('Error sending message:', error);
             throw new Error('Error sending message:', error);
           });
             });
         })
       })
     })

如果我理解正确,您只需要添加中断条件。 加在后面

var postOwnerUid=post.ownerUid

这句话:

if(commentUid==postOwnerUid)

返回承诺。解决()如果我理解正确,您只需要添加中断条件。 加在后面

var postOwnerUid=post.ownerUid

这句话:

if(commentUid==postOwnerUid)


返回承诺。解决()仅为基本理解,您需要将登录用户设备id从业务逻辑中排除。您是否有我可以参考的示例或来源?@iOSTeam抱歉忘了提及您。.您解决了问题吗?@iOSTeam抱歉,我不明白您的意思。仅为基本理解,您需要从您的业务逻辑中排除您登录的用户设备id。您是否有我可以参考的示例或来源?@iOSTeam抱歉忘了提及您。您解决了您的问题吗?@iOSTeam抱歉,我不明白您的意思。感谢您的回复!我对这种语言不太熟悉,当你说添加中断条件时,我需要添加
break任何地方?不,就是这里。您不需要添加任何其他内容。我的意思是像“break”这样的表达,而不是明确的“break”。你介意告诉我我是否做对了吗?我将其添加到oberseveComments代码中。但是现在我根本没有收到任何评论通知。我现在将更新我的问题并添加代码@Maciej Fryta Frydrychowicz找到了它,我只是没有正确定义UID。感谢您的回复!我对这种语言不太熟悉,当你说添加中断条件时,我需要添加
break任何地方?不,就是这里。您不需要添加任何其他内容。我的意思是像“break”这样的表达,而不是明确的“break”。你介意告诉我我是否做对了吗?我将其添加到oberseveComments代码中。但是现在我根本没有收到任何评论通知。我现在将更新我的问题并添加代码@Maciej Fryta Frydrychowicz找到了它,我只是没有正确定义UID。非常感谢。