开发者问题收集

Axios 与 firebase 在放置数据时不会返回数据

2020-06-05
1745

我正在使用 React 和 Firebase 以及 Axios 制作一个调查工具,现在我试图制作一个模板功能,其中我已经创建了一些存储在 firebase 中的调查模板,现在当用户想要访问模板时,我能够以 json 格式获取模板,但我无法将其复制到他们的帐户中。

这是我用来获取调查模板的代码

const fetchSurvey = async () => {
  const res = await axios.get(
    "/surveys/ckb0kmt3n000e3g5rmjnfw4go/content/questions.json"
  );
  console.log(res.data);
};

其中“ckb0kmt3n000e3g5rmjnfw4go”是调查 ID,当我执行此操作时,数据成功登录到控制台,但是当我使用此模板创建新调查时:

const fetchSurvey = async () => {
  const res = await axios.get(
    "/surveys/ckb0kmt3n000e3g5rmjnfw4go/content/questions.json"
  );
  return res.data
};
const content = {
  title: "Your Survey Title",
  subTitle: "Your Survey Description",
  creatorDate: new Date(),
  lastModified: new Date(),
  questions: fetchSurvey(),
  submitting: true
};
this.setState({
  _id: newId(),
  content: content,
  userId: this.props.user_Id
});


}



    clickHandler = () => {
        const newSurvey = { ...this.state };
        axios
          .put(
            "/surveys/" + this.state._id + ".json?auth=" + this.props.token,
            newSurvey
          )
          .then(res => {
            this.props.onGetSurveyId(res.data._id);
          })
          .catch(error => {
            console.log(error);
          });
      };

在此之后,调查确实已创建,但问题键将丢失并且不会呈现任何问题。请帮帮我

2个回答
const content = {
  ...
  questions: fetchSurvey(),
  ...
};

this.setState({
  ...
  content: content,
  ...
});

这不起作用。 questions: fetchSurvey(), 计算结果为 Promise<any> 您必须在回调中设置状态

componentDidMount() {
  fetchSurvey()
    .then(questions => {
      // either update existing state or create everything there when you get questions
      this.setState(state => ({
        ...state,
        content: {
          ...state.content,
          questions
        }
      }));
  })
}

Józef Podlecki
2020-06-05

如果您想从 firebase 获取数据,则应使用 firebase 实例进行查询,如 firestore 或实时数据库。

Firestore 查询教程: https://firebase.google.com/docs/firestore/query-data/get-data#g​​et_a_document

实时数据库教程: https://firebase.google.com/docs/database/web/read-and-write#read_data_once

Vương Vũ Nguyễn
2020-06-05