【问题标题】:Why I can't set state to Firebase's doc data?为什么我不能为 Firebase 的文档数据设置状态?
【发布时间】:2021-10-24 10:52:26
【问题描述】:

我从我的 firestore 数据库中获取数据,如下所示:

const [songs, setSongs] = useState();

async function getSongs() {
  const songs = collection(db, 'songs');
  const songSnapshot = await getDocs(songs);
  const songList = songSnapshot.docs.map(doc => doc.data());
  setSongs(songList);
  console.log(songList);
  console.log(songs);
};

如果我运行这个,控制台中有两个对象,第一个是songList,第二个是songs

为什么两者之间有区别?如何将 歌曲 转回数组?

【问题讨论】:

  • 你得到什么错误?代码看起来不错,应该设置 songList
  • songList 是一个数组,但是当我用 songList 设置“歌曲”状态时,songs!=songList(参见控制台图像)

标签: javascript reactjs firebase google-cloud-firestore


【解决方案1】:

"songs"CollectionReference 并且不包含数据。 "songList" 是一个数组,其中包含来自getDocs() 返回的文档的数据。你应该在你的状态中设置songList 而不是songs

来自documentation

CollectionReference 对象可用于添加文档、获取文档引用和查询文档(使用 query())。

【讨论】:

  • 感谢您的评论,我意识到了真正的(愚蠢的,非常愚蠢的)问题!原来我为两个不同的变量使用了“states”这个名字,一个是你上面说的ColletionReference,另一个是State(我代码的第一行)
猜你喜欢
  • 2020-10-02
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2020-04-28
相关资源
最近更新 更多