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