问题标签 [google-cloud-firestore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
228 浏览

firebase - 在安全规则中使用引用

假设有两个文件

并且/users/alice有一个引用类型字段org引用/orgs/foo.

/orgs/foo时应该可以访问request.auth.uid == 'alice'。我怎样才能做到这一点?

我想它是这样的,但我无法弄清楚。换句话说,我怎样才能得到被引用文档的 ID?

0 投票
4 回答
46277 浏览

android - 如何在 Firestore 中一次创建/更新多个文档

是否可以仅通过一个请求将多个文档存储在 Firestore 中?使用此循环是可能的,但这会导致列表中的每个项目进行一次保存操作。

0 投票
2 回答
14634 浏览

firebase - Firestore:ID 在集合中是唯一的还是全局唯一的?

对于我的数据库的结构,我需要知道 Firebase Cloud Firestore 中自动生成的标识符在集合中还是在整个数据库中是唯一的。

怎么做?

0 投票
5 回答
12790 浏览

javascript - Firestore Web 代码示例提供了无效的参数类型

我正在试用 Firebase 的新 Firestore。当我从https://firebase.google.com/docs/firestore/manage-data/add-data?authuser=0运行代码示例时,出现错误。

异常捕获:(FirebaseError):函数CollectionReference.add()要求其第一个参数是对象类型,但它是:自定义对象对象

编辑:对不起,我没有提到我正在使用 GWT 和 JSNI,没有 gwt 也可以正常工作

0 投票
3 回答
1484 浏览

json - Nodejs,Cloud Firestore上传任务 - 身份验证错误:错误:套接字挂起

我正在编写一个函数,该函数运行 API 调用并通过偏移量从一个巨大的数据库按顺序请求 JSON。解析 JSON 响应,然后将其中的后续数据上传到我们的 Cloud Firestore 服务器。

Nodejs (Node 6.11.3) 和最新的 Firebase Admin SDK

信息按预期解析,并完美打印到控制台。但是,当数据尝试上传到我们的 Firestore 数据库时,控制台会收到以下错误消息:

身份验证错误:错误:套接字挂起

(节点:846)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:-Number-):错误:从插件获取元数据失败并出现错误:套接字挂起

偶尔:

验证错误:错误:读取 ECONNRESET

forEach 函数从下载的 JSON 中收集项目并在上传到 Firestore 数据库之前处理数据。每个 JSON 最多有 1000 条数据(价值 1000 个文档)通过 forEach 函数传递。我知道如果函数在上传集完成之前重复,这可能是一个问题?

我是一名编码新手,并且了解此功能的控制流程并不是最好的。但是,我找不到有关控制台打印错误的任何信息。我可以找到大量关于套接字挂断的信息,但在 Auth 错误部分没有。

我使用生成的服务帐户 JSON 作为凭据来访问我们的数据库,该数据库使用 firebase-adminsdk 帐户。我们对数据库的读/写规则目前是开放的,允许任何访问(因为我们正在开发中,没有真正的用户)。

这是我的功能:

Firebase 初始化和偏移归零

运行函数并设置 HTTP 标头

如果我们还没有到达 API 响应的末尾,则运行 HTTP 请求并重新运行该函数

任何帮助将不胜感激!

更新

我刚刚尝试更改一次提取的 JSON 行,然后使用该函数一次上传 - 从 1000 到 100。套接字挂起错误的频率较低,因此肯定是由于数据库过载。

理想情况下,如果每个 forEach 数组迭代在开始之前等待前一次迭代完成,那将是完美的。

更新#2

我已经安装了 async 模块,我目前正在使用 async.eachSeries 函数一次执行一个文档上传。上传过程中的所有错误都会消失 - 但是该功能将花费大量时间才能完成(158,000 个文档大约需要 9 小时)。我更新的循环代码是这样的,实现了一个计数器:

此外,一段时间后数据库返回此错误:

(节点:16168)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:-Number-):错误:数据存储操作超时,或数据暂时不可用。

似乎现在我的功能花费了太长时间......而不是不够长。有没有人有任何关于如何使这个运行速度更快而不出现错误的建议?

0 投票
8 回答
10467 浏览

android - com.google.firebase.firestore.FirebaseFirestoreException:由于客户端离线,无法获取文档。安卓

我收到此运行时错误,我不明白其背后的原因。

com.google.firebase.firestore.FirebaseFirestoreException: Failed to get document because the client is offline.

下面是我的 Activity 中尝试从云 Firestore 获取数据的代码

对此我能做些什么吗?

0 投票
1 回答
1882 浏览

ios - 带有 Firebase 数据库或 Firestore 读/写的 Swift 4

我在 iOS 开发方面相当新,对数据库集成也很陌生。简而言之,我正在尝试创建一个水跟踪器。在实时数据库和 Firestore 中,我都可以写入新数据和更新数据。当我关闭并重新打开应用程序时,控制台会打印当前存储的值。我正在努力将这个价值纳入标签。我的字典是设置(例如)[“Cups of Water:”x],我想将 x 的值放入标签中,但我似乎无法提取该值。

我似乎无法克服的另一个问题是附加数据库存储的内容,而不是完全覆盖。当我关闭/重新打开应用程序时,控制台会打印“15”(例如),排除我能够将值导入标签的问题,如果我触摸添加杯子按钮,它将覆盖“15”的值现在显示“1”。

这显然是我没有正确添加的内容,我对问题所在有一些想法,但我不太明白。非常感谢任何输入!

下面的代码特定于 Firestore。我可以在实时数据库中获得类似的过程(通过使用正确的语法)。代码:

0 投票
1 回答
17418 浏览

firebase - 将 Firebase 身份验证用户映射到 Firestore 文档

我正在尝试使用FirebaseFirestore数据库来处理User我的 Android 应用程序中的 s 。

最初我想使用从包返回的idAuth(一个字符串),并将其设置为users Collection数据库中的 id。在创建Document内部时Collection users,我uid为该身份验证包字符串设置了一个字段。

我意识到没有办法将该字符串设置为可索引的值,以便查询如下:

会工作。

因此,我想,另一种选择是使用Query.whereEqualTo("uid", auth_uid_string)which 会给我一个列表中的用户,因为 firestore 不假设查询是针对唯一值的。

我想避免上述解决方案,并设计一种users将应用程序存储在 中的方法firestore,并使用auth包来验证我是否获取了正确的用户。这样的解决方案可能吗?或者我应该尝试不同的firebase服务,或者甚至只是在heroku中运行一个postgres服务器或其他什么?

0 投票
0 回答
276 浏览

firebase - Firestore,避免重新查询数据

原谅我,但这是一个非常基本的问题,我真的找不到很好的解释..

假设我正在查询一个集合以查找某些属性,并返回一些匹配的结果。

然后我重新查询寻找一些不同的属性,其中一些将具有相同的结果。

有没有办法避免重新下载该数据?我的一些结果已经加载到用户手机上。那有意义吗?基本上是在寻找一种缓存数据的方法,而不必担心两次拉取相同的数据

0 投票
1 回答
922 浏览

java - Firestore 限制每次写入访问

在 Firestore 安全设置中,您可以设置写入/读取数据的条件。

目前我有这件作品:

现在我想限制写作;用户应该只能每 5 分钟发送一次数据。我怎样才能做到这一点?