【问题标题】:Nuxt - result.forEach is not a function?Nuxt - result.forEach 不是函数?
【发布时间】:2019-06-14 08:06:34
【问题描述】:

所以我目前正在尝试通过以下方式从 Cloud Firestore 中提取 Nuxt 中的数据:

async asyncData(){

    return firebase.firestore().collection('test').doc().get()
      .then((result) => {

        result.forEach(doc => {

          console.log(doc.data())          
        })       
      })
  }

导致以下错误:

async asyncData() {
    return _plugins_firebase_config__WEBPACK_IMPORTED_MODULE_0__["default"].firestore().collection('test').doc().get().then(result => {
      result.forEach(doc => {
        console.log(doc.data());
      });
    });
  }

带有错误信息:

TypeError
result.forEach is not a function

在没有 forEach 的情况下提取数据可以正常工作。因此,如果我按名称指定文档并仅获取一个文档的数据,那么一切都会按预期工作。 但是,由于我需要整个数据集合,我必须通过 forEach 拆分数据。有什么想法可能导致这种情况吗? 相同的示例在 VueJS 本身中也可以正常工作。

我已经使用 nuxt cli 生成了一个新项目,所以项目设置应该没问题。

【问题讨论】:

  • forEach 在 arrays 上工作。你的result 是对象吗?
  • 使用console.log(result)或debugger检查变量result
  • 结果不为空。 console.log(result) 工作正常,但当然只提供从 Firebase 返回的文档参考。 @ljubadr,是的,数据是一个数组。如前所述,在 VueJS 中做同样的事情很好,所以我猜肯定与 Nuxt 及其 asyncData 调用有关。

标签: firebase vue.js webpack google-cloud-firestore nuxt.js


【解决方案1】:

先获取并修改你的数据,然后返回。

修改您的代码,使其如下所示:

async asyncData () {

    let data = []

    await firebase.firestore()
    .collection('test')
    .doc()
    .get()
    .then((result) => {
      result.forEach(doc => {

        data.push(doc.data())    

      })       
    })

    return data
}

【讨论】:

    猜你喜欢
    • 2021-06-08
    • 2021-12-25
    • 2020-04-11
    • 1970-01-01
    • 2022-10-18
    • 2019-01-13
    • 2021-08-30
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多