如何在Promise.all结果中过滤掉空值?

时间:2017-08-29 22:04:43

标签: javascript promise

AckHandler

现在,如果snapshot.val()为null,则该元素仍包含在最终结果中。

我如何在最终地图中插入空元素?

1 个答案:

答案 0 :(得分:3)

添加then回调并使用Array#filter删除null元素:

exports.getMentionedUsers = function(str) {
    return Promise
        .all(getUsernamesFromString(str).map(username => {
            return db.ref('/users').orderByChild('username').equalTo(username).once('value').then(snapshot => {
              return snapshot.val();
            });
        }))
        .then(values => values.filter(v => v);
}

更新:如果您需要使用null值删除完全的元素,则应使用此过滤器:v => v !== null