为什么此javascript / firebase函数返回诺言?

问题描述

我今天在这个功能上一直不知所措。我要做的就是从Firebase中的集合中获取所有文档,并将其放在诸如fakeProjectMetaData之类的文档数组中。

这里也有类似的问题:

但是当我通过自己的代码时,我只是不明白。我实际上已经尝试过许多不同的事情来对其进行编程并将其删除,因此在此处无法显示。因此,我将展示我拥有的东西以及什么会伤脑筋。

以下代码在服务文件中。我已经将该功能导入了另一个文件。我在React中尝试使用上下文API和Hooks。认为这是仅供参考,因为我认为与以下内容无关


import firebase from "../data/firebase/config";

const fdb = firebase.firestore();

    const fakeProjectMetaData = [
      {
        projectID: 1234,projectName: "Testing 123",numberOfKeywords: 2109,scrapeFrequency: "Weekly",lastUpdate: "2 days ago",},{
        projectID: 4567,projectName: "some other one",numberOfKeywords: 10245,scrapeFrequency: "Monthly",lastUpdate: "Last month",{
        projectID: 7894,projectName: "Creative agency version 1",numberOfKeywords: 105,scrapeFrequency: "Daily",lastUpdate: "Yesterday",];

// fake data is just to show the datastructure. It's not used now. 

export const getAllProjects = async () => {

  const allProjectData = [];
  await fdb
    .collection("fakeProjects")
    .get()
    .then((snapshot) => {
      snapshot.forEach((project) => {
        allProjectData.push(project.data());
        return;
      });
    })
    .catch(function (error) {
      console.log("Error getting documents: ",error);
    });

  return allProjectData;
};

(也许我不应该在这里使用异步等待吗?)在另一个文件中,我按如下方式调用该函数:

const projectData = getAllProjects();

现在我意识到这个projectData是(仍然吗?)一个我必须像这样处理的承诺:

projectData.then((project) => {
  console.log(project);
}); 

至少输出我期望的数组。但是,将其更改为以下内容将不起作用。

const projectArray = projectData.then((project) => {
return project;
}); 

console.log(projectArray);

对于您的答案感到非常好奇,为什么这会导致诺言,我希望这个getAllProjects返回一个对象数组。我想念什么?如何从firestore将此结果作为数组使用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...