Javascript 检查promises.push后是否返回后值

Javascript 检查promises.push后是否返回后值,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我有这个: var post = firebase.database().ref('/posts/' + value).orderByKey(); promises.push( post.once('value').then((snapshot2) => Object.assign(snapshot2.val(), { key: snapshot2.key, likeOrNot: likeOrNot }))); if posts/value if不是posts中

我有这个:

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

promises.push(
  post.once('value').then((snapshot2) => Object.assign(snapshot2.val(), {
    key: snapshot2.key,
    likeOrNot: likeOrNot
  })));
if posts/value if不是posts中的有效值,我会得到以下错误:
Uncaught(in promise)TypeError:无法将未定义或null转换为object

我想在推送邮件之前检查一下!==null或类似的内容以避免此错误

有什么想法需要更改吗?

我建议使用
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
array…)