如何在 Firebase 存储中获取用户详细信息?

How do I get user details in Firebase Storage?

我是一名新程序员,也是 firebase 的新手,我正在尝试让当前用户文件信息显示在屏幕上,看来我的问题是我可以获得 URL和元数据分开,我如何将它们组合起来?我怎样才能一次拿走所有东西? 我需要显示文件名、日期、时间,link 才能下载。

const getUserFiles = async () => {
  if (!userUID) {
    return null;
  }
  let listRef = storageRef.child(userUID);
  listRef.listAll().then(res => {
    // res.prefixes.forEach((item) => {
    // });
    res.items.forEach(item => {
      item.getMetadata().then(item => {
        var file = {
          name: item.name.toString(),
          timeCreated: item.timeCreated.toString(),
          link: '',
        };
        myFiles.push(file);
      });
    });
    res.items.forEach(item => {
      let counter = 0;
      item.getDownloadURL().then(url => {
        myFiles[counter].link = url.toString();
      });
    });
  });
  console.log(myFiles);
};

目前的方法不行!并注意 userUID 它只是没有用户的 uid(本地状态)

谢谢!

问题出在异步调用上。您正在 forEachforEach expects a synchronous function.

中进行异步调用

您可以更改逻辑以改为使用 for-of

见下文:

const getUserFiles = async () => {
  if (!userUID) {
    return null;
  }

  let listRef = storageRef.child(userUID);

  const res = await listRef.listAll();

  for (const itemRef of res.items) {
    const itemMetadata = await itemRef.getMetadata();
    const url = await itemRef.getDownloadUrl();

    var file = {
      name: itemMetadata.name.toString(),
      timeCreated: itemMetadata.timeCreated.toString(),
      link: url,
    };

    myFiles.push(file);
  }

  console.log(myFiles);

}