解决承诺仅显示数组

时间:2020-06-15 04:09:55

标签: javascript arrays reactjs firebase promise

我能够解决退还我的诺言

Promise {<pending>}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Array(7)

但是这次我在提取变量时遇到了问题,在这种情况下,事实证明,我要提取它的原因是将其存储在react useState中。

这是代码

 const fsdasfda = db
    .collection("socios")
    .where("activity", "==", "true")
    .orderBy("num")
    .get()
    .then(function (query) {
      const array = [];
      query.forEach(function (doc) {
        const data = doc.data();
        array.push(data);
      });
      return array;
    })
    .then((result) => {
      console.log(result);
    });

  console.log(fsdasfda);

const [unidades,setUnidades] = useState(HERE);

console.log(结果);它返回我要传递给使用状态的数据。 console.log(fsdasfda);承诺回报

如前所述,我想将RESULT值传递给useState

我尝试了一下,但它仍然是一个应许。

fsdasfda.then((数据)=> console.log(数据));

1 个答案:

答案 0 :(得分:0)

您将在记录承诺时获得此日志,将await添加到数据库查询中(此代码段应在异步函数内),然后使用fsdasfda.then(data => updateState(data));

const fsdasfda = await db // added await
.collection("socios")
.where("activity", "==", "true")
.orderBy("num")
.get()
.then(function (query) {
  const array = [];
  query.forEach(function (doc) {
    const data = doc.data();
    array.push(data);
  });
  return array;
})
.then((result) => {
  console.log(result);
});
fsdasfda.then(data => {
  console.log(data);
  setUnidades(data); // updating state and logging result data.
});

检查是否可以正常工作。