javascript - 当我在 Firebase 中找到要获取的数据时如何停止 forEach?
问题描述
我想从 Firebase 获取数据。但我知道 Firebase 使用 forEach 搜索数据库中的数据。
db.collection('users').get()
// eslint-disable-next-line promise/always-return
.then((snapshot) => {
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
myData.push(doc.data().first);
});
const title = myData.find( e => e === 'Dennis');
res.render('index', {title});
// return null;
})
.catch((err) => {
console.log('Error getting documents', err);
});
您可以看到 forEach 将搜索doc.data().first
数据库中的每一个。但我认为这是在数据库中搜索数据的一种非常低效的方法。我希望 forEach 在找到我想要获取的数据时停止。
解决方案
根据DataSnapshot.forEach的 API 文档,没有办法终止循环。即使可以,它仍然会从查询中读取每个匹配的文档。这意味着无论 forEach 发生什么情况,您仍在将每个文档传输给客户端。
如果您想提高效率,请仅查询您知道要接收的文档。在您的情况下,如果您想查找特定字段包含字符串“Dennis”的文档,您应该只查询这些文档,如文档中所述。
推荐阅读
- php - 让用户只能看到自己上传的文件
- php - .env 更改后,Laravel 数据库仍使用旧名称
- python - Python将数组从函数传递到函数
- ffmpeg - 如何修复 ffmpeg 复杂过滤器“无效的流说明符”
- javascript - 如果文本来自控制器变量,Rails 确认弹出文本不显示
- html - 一个标题的字体不会改变,但其他的字体会改变,我该怎么办?
- pine-script - 比较 3 种证券时的 resolve_error
- swift - Swift If 语句中的错误
- java - 应该填写什么以便代码可以成功运行?
- apache - 为什么我的子域文件夹中的 htaccess 会覆盖我主域中 htaccess 的各个方面?