首页 > 解决方案 > 检查 promises.push 之后是否发布返回值

问题描述

我有这个:

var post = firebase.database().ref('/posts/' + value).orderByKey();

promises.push(
  post.once('value').then((snapshot2) => Object.assign(snapshot2.val(), {
    key: snapshot2.key,
    likeOrNot: likeOrNot
  })));

如果帖子/值如果不是帖子中的有效值,我会收到此错误:Uncaught (in promise) TypeError: Cannot convert undefined or null to object

我想在推送之前检查是否 post !== null 或类似的东西以避免此错误。

有什么想法我需要改变吗?

标签: javascriptreactjsfirebasefirebase-realtime-database

解决方案


我建议使用and的exists()方法DataSnapshot如下:

var post = firebase.database().ref('/posts/' + value).orderByKey();
promises.push(post.once('value'));

// ...

return Promise.all(promises)
.then(dataSnapshots => {

  const objectsArray = [];
  dataSnapshots.forEach(snap => 
     if (snap.exists()) {
         objectsArray.push(
           Object.assign(snap.val(), {key: snap.key, likeOrNot: likeOrNot})
         )
     }

  // ...
  // return ... 
})

必要时进行微调!!(您可能不需要objectsArray数组...)


推荐阅读