我想在Firebase中获取路径的值。说我同意

firebaseAuth.onAuthStateChanged(user => {
  var displayName =
    firebase.database()
    .ref('/users/' + user.uid + '/name/')
    .once('value').then(snapshot => snapshot.val());

    store.dispatch('checkUser', {
        user
        displayName
    });
});


在我的控制台中,我得到一个承诺,即用户displayName的价值,在其中我看到了正确的价值,但是我如何实现呢?当我尝试在回调中将displayName设置为snapshot.val()时,它将抛出错误。

javascript - 在 promise 中抢占Firebase中的路径值(value)-LMLPHP

javascript - 在 promise 中抢占Firebase中的路径值(value)-LMLPHP

我为什么不能这样做?似乎在文档中是可能的。

javascript - 在 promise 中抢占Firebase中的路径值(value)-LMLPHP

最佳答案

因为语法不正确而引发该错误。它需要包含在一个块中:

.once('value').then(snapshot => { const displayName = snapshot.val(); });


但是,这不能解决问题。您需要将dispatch调用移到回调中-快照已在其中解析:

firebaseAuth.onAuthStateChanged(user => {
  firebase.database()
    .ref('/users/' + user.uid + '/name/')
    .once('value').then(snapshot => store.dispatch('checkUser', {
      user
      displayName: snapshot.val()
    }));
});

10-05 23:35