小编Ada*_*amG的帖子

在从我的承诺/功能返回之前等待forEach完成

我正在使用Firebase Cloud Firestore,但是,我认为这可能更像是JavaScript异步vs同步承诺返回问题.

我正在进行查询以从一个集合中获取ID,然后我循环查询该查询的结果,以根据该ID查找来自另一个集合的各个记录.

然后我想将每个找到的记录存储到一个数组中,然后返回整个数组.

results.length始终为0,因为return results在forEach完成之前触发.如果我results.length从forEach内部打印它有数据.

在从外部promise和外部函数本身返回之前,我怎么能等到forEach完成?

         getFacultyFavoritesFirebase() {
            var dbRef = db.collection("users").doc(global.user_id).collection("favorites");
            var dbQuery = dbRef.where("type", "==", "faculty");
            var dbPromise = dbQuery.get();
            var results = [];
            return dbPromise.then(function(querySnapshot) {
                querySnapshot.forEach(function(doc) {
                  var docRef = db.collection("faculty").doc(doc.id);
                  docRef.get().then(function(doc) {
                    if (doc.exists) {
                        results.push(doc);
                    }
                  })
                });
                console.log(results.length);
                return results;
            })
            .catch(function(error) {
                console.log("Error getting documents: ", error);
            });
          }
Run Code Online (Sandbox Code Playgroud)

javascript node.js firebase google-cloud-firestore

7
推荐指数
1
解决办法
9190
查看次数

Firebase Firestore:orderBy结合在哪里导致错误“操作被拒绝”

我正在查看Firebase Cloud Firestore 文档以了解orderBy。当我尝试执行此

var facultyQuery = facultyRef.where("department", "==", "Core Teacher").orderBy('bb_last_name', 'desc');
Run Code Online (Sandbox Code Playgroud)

我得到错误:

Error: Firestore: Operation was rejected because the system is not in a state required for the operation`s execution. (firestore/failed-precondition).
Run Code Online (Sandbox Code Playgroud)

这两个简单的案例都可以正常工作:

var facultyQuery = facultyRef.orderBy('bb_last_name', 'asc');
var facultyQuery = facultyRef.where("department", "==", "Core Teacher");
Run Code Online (Sandbox Code Playgroud)

但是,当我将where和orderBy结合在一起时,我之前在其他Firestore集合中所做的事情就失败了。

这是一个示例记录: 在此处输入图片说明

javascript firebase google-cloud-firestore

7
推荐指数
1
解决办法
1453
查看次数

React Native:如何解析 ics / ical 文件

解析 ical / ics 文件的最佳方法是什么?我把它全部放在一个字符串中,但我找不到与 RN 兼容的包或库。所有一般的 JS 或 Node 都会抛出关于 FS 包丢失的错误。我正在从 URL 中读取它并将其全部保存在内存中,因此我什至不需要文件系统访问权限。

javascript node.js react-native

5
推荐指数
2
解决办法
3902
查看次数

如何查找警告原因:PropTypes已移至单独的包中

如果我收到警告"警告:PropTypes已被移动到单独的包中".如何找到哪个npm包仍在使用它?警告不提供有关导致它的文件或包的任何详细信息.

在此输入图像描述

reactjs react-native

4
推荐指数
1
解决办法
476
查看次数

SetState回调不等待状态更新

根据setState文档,回调应在设置新状态后触发.但是,我的代码

console.log(school);
this.setState({ lastSegment: school },console.log(this.state.lastSegment));
Run Code Online (Sandbox Code Playgroud)

打印:

Middle
Grammar
Run Code Online (Sandbox Code Playgroud)

由于school ="Middle",为什么setState回调打印"Grammar"(这是this.state.lastSegment的前一个值)

javascript react-native

1
推荐指数
1
解决办法
1197
查看次数

可能未处理的承诺拒绝。无法读取未定义的属性

我是功能性 Javascript 和承诺的新手。下面的代码很好用,直到我取消注释 this.writeDataToRealm(data.data)。然后我收到这个错误:

可能未处理的承诺拒绝。无法读取未定义的属性“writeDataToRealm”

如何将数据发送到函数进行进一步处理?

...
 fetch(url, {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    Authorization: "Bearer " + token
  },
  }).then(function(response) {
    if (response.status !== 200) {
      throw Error(response.statusText);
    } else {
        return response.json().then(function(data) {
          console.log(data);
          return data.data;
        })
      }
    }).then(data => {
      this.writeDataToRealm(data.data)
    }, err => {
      console.log('Fetch Error: ', err);
    });

   }

   writeDataToRealm(data) {
    console.log(data[0]);
    realm.write(() => {
      realm.create('Student', {id: data[0].kp_ID, bb_first_name: data[0].kp_ID});
    });
  }
Run Code Online (Sandbox Code Playgroud)

javascript promise

0
推荐指数
1
解决办法
2万
查看次数

反应本机警告:“设置一个很长一段时间的计时器......”。如何定位原因?

iOS 上的一切正常。在 Android 上,我收到警告“长时间设置计时器,即多分钟,是 Android 上的性能和正确性问题,因为它使计时器模块保持唤醒状态,并且计时器只能在应用程序处于前景。有关更多信息,请参阅https://github.com/facebook/react-native/issues/12981。(看到 setTimeout 持续时间为 589668ms)”

我没有在我的应用程序中使用任何计时器,所以我假设这是来自我安装的 NPM 模块。我如何确定是哪一个导致了这种情况?

我看到我可以忽略 waring,但我想向模块维护者报告这个问题。

android node.js reactjs react-native

0
推荐指数
1
解决办法
1万
查看次数