我正在尝试创建一个云功能(在firebase中),该功能可以跟踪我的实时数据库中的posts节点,当发布新帖子时,我的函数应该触发然后执行某些操作。
一切正常,但问题仅在一次循环的forEach方法中发生
这是我的代码
exports.Notif =
functions.database.ref('/Posts/{notification_id}')
.onWrite((change, context) =>
{
const notification_id = context.params.notification_id;
console.log('A new Post : ', notification_id);
if(!change.after.val())
{
return console.log('A notification has been deleted from the database : ', notification_id);
}
const POST = admin.database().ref(`/Posts/${notification_id}`).once('value');
return POST.then(fromUserResult =>
{
const countryCode = fromUserResult.val().countryCode;
const post = fromUserResult.val().post;
console.log('countryCode : ', countryCode);
console.log('post : ', post);
var query = admin.database().ref("Users").once('value');
return query.then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key;
console.log('key : ', key);
const senderUserQuery = admin.database().ref(`/Users/${key}`).once('value');
return senderUserQuery.then(senderUserNameResult =>
{
const countryCode2 = senderUserNameResult.val().countryCode;
const token2 = senderUserNameResult.val().token;
const uid2 = senderUserNameResult.val().uid;
// mute + active
if (countryCode === countryCode2 ){
console.log('yes uid : ', uid2);
} else{
console.log('no uid : ', uid2);
}
return null;
});
});
return null;
});
});
});
我希望循环访问 Users 节点中存储的所有键,但是发生的事情是第一次循环后它停止了。
经过长时间搜索,我知道问题出在使用 return ,但是我仍然无法解决它。
如果我不使用返回,则会收到此错误Expected catch() or return
如何解决?