问题标签 [mongodb-realm]

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 回答
535 浏览

javascript - MongoDB Realm vs. Stitch 登录时间——为什么 Realm 这么慢?

我使用托管在 Atlas 上的 MongoDB 数据库构建了一个 Web 工具,通过Stitch连接。据我了解, Stitch 现在已经贬值并变成了MongoDB Realm。所以我尝试使用新的 Realm 应用程序而不是 Stitch 来更新我的网站。虽然它确实有效,但由于某种原因,匿名登录现在要慢得多。我使用 MongoDB 文档中建议的代码进行了一些快速测试:

登录让我难以置信1200 ms

使用旧的 Stitch App,通常需要20 ms登录。

任何想法这里发生了什么或如何解决这个问题?我确实知道有可能按照他们的文档中的描述首先对用户进行身份验证,但是我尝试过,它同样很慢。

是否真的需要更新到新的 Realm 应用程序,例如旧的 Stitch 实现在不久的将来会停止工作吗?任何有关这方面的信息将不胜感激;)

更新:我做了更多调查,似乎 Realm 速度较慢的原因在于使用登录会logIn(Realm.Credentials.anonymous()).then(() => ...导致两个 Post 请求,但使用auth.loginWithCredential(new stitch.AnonymousCredential()).then(() => ...会在一个请求中完成身份验证和内容下载。使用 Realm,我两次获得 500-700 毫秒的 TTFB 等待时间,而 Stitch 只发生一次。

0 投票
1 回答
300 浏览

c# - 领域数据库是否支持 Blazor Web 程序集?

我有一个雄心勃勃的目标,即构建一个跨平台应用程序,该应用程序将尽可能多地共享可在桌面、移动设备和 Web 浏览器上运行的代码。该应用程序将使用领域数据库和 mongoDB atlas 进行云同步。

所有这些不错的离线优先自动同步功能都可用于桌面和移动设备。我想知道我是否可以将其用于 blazor web 程序集?

假设这是不可能的,我可以使用什么替代品作为数据库?我该怎么做才能在 blazor 上实现与 mongoDB 领域云数据库的实时同步作为后备?

0 投票
0 回答
193 浏览

mongodb - 如何在 MongoDB Realm 中创建嵌套数组?

我正在创建一个使用 geojson 数据的 webapp。我想将这些数据存储在 MongoDB Atlas 中并通过 MongoDB Realm 访问它。我遵循了官方的 MongoDB 文档。问题是当我为我的集合创建架构时,自动生成的 GraphQL API 无法识别嵌套数组。我对 MongoDB 比较陌生,所以我不确定这是与 MongoDB 还是 GraphQL 相关的问题。

我的集合的架构(为简单起见而减少)是:

它只是一个数组数组。创建此模式不会出错。我什至可以针对文档验证架构并且它们通过了。但是,当我尝试使用 GraphQL 查询它们时,我收到以下警告:

警告:JSON 架构无法完全转换为 GraphQL 架构。一些规则/字段被忽略。

JSON Schema 中的错误处理“类型”属性

结果,GraphQL 忽略了“coords”属性,我无法查询它。

0 投票
1 回答
422 浏览

node.js - MongoDB 领域 BadChangeSet 错误:无法验证上传变更集:ProtocolErrorCode=212

我是 MongoDB Realm 的新手,但是对 MongoDB 有一些经验。

在对同一问题发表任何评论之前,我已经参加了所有讨论,但没有任何帮助。

我咨询了这些讨论:

Android BAD_CHANGESET(realm::sync::ProtocolError:212): Bad changeset (UPLOAD) 错误

不断收到 BadChangeset 错误

但遗憾的是,上述解决方案要么对我不起作用,要么我无法理解。

我目前在 Nodejs 中使用 Realm。激活同步时,我将分区键作为 restroName。但是我在使用以下连接时不断收到 212 错误:

当我尝试使用 partionValue: “anything” 时,它给出:

所以我认为它需要是 partitionValue 上的 user.id,但我想将数据存储在 restroName 的领域中。

此外,我总是在进行更改之前清除领域数据(擦除它)。

我希望我能得到帮助。

更新:我的项目架构如下所示:

0 投票
0 回答
61 浏览

realm - 如果没有在 Realm 10 中进行初始下载,则不会触发 ProgressNotification 回调

我们在我们的应用程序中使用 MongoDB Realm。

用户第一次连接到应用程序时,ProgressNotifcation 回调被正确触发,并且每当有新的下载到来时它就会工作并触发。即使没有挂起的下载,也会触发 ProgressNotification 回调(回调中的 Progress 对象传递将包含上次下载的值)至少一次(创建时)。我想这是因为我们正在下载用户的第一个数据集。

但是在杀死应用程序并再次启动后,ProgressNotification 回调将不再触发,直到应用程序接收到新数据。并且从这一点开始,每次我们需要它时都会调用回调。

现在看来,自从应用程序启动以来,该框架需要第一次下载,以便在每次我们需要它时触发 ProgressNotification 回调。

这在以前版本的 Realm (5.XX) 中有效。我们刚刚完成了到 Realm 10 的迁移并发现了这个问题。我有点卡在这里,不知道这是我的预期更改还是错误。但我很确定这在以前版本的 SDK 中有效。

谁能帮我这个?谢谢

注意:这不再适用于两种模式:.forCurrentlyOutstandingWork 和 .reportIndefinitely

例子

编辑 - 21/12/2020

为了澄清起见,返回的令牌包含一个值,并且 .invalidate 没有被调用。

会话中没有错误,任何新下载都会触发回调。初次下载后,一切都按预期工作。这意味着当我稍后添加 progressNotifcation 时,会立即触发回调,并与之前下载的进度一起。但如果没有初始下载,则永远不会调用回调。

对于作用域,这个方法实际上是在我创建的自定义发布者中,并且没有被释放。

领域 10.5.0

iOS 14.3

0 投票
0 回答
86 浏览

realm - MongoDB Realm 上每个客户端的连接数

根据此评论,MongoDB Realm 上每个“正在运行的应用程序进程”至少有 4 个连接,这四个中的三个是恒定的(监控连接),其余的取决于查询/写入的数量。据我了解,每个同步的领域都是另一个连接。

一个复杂的应用程序可以同步多个领域,这意味着拥有 10 个打开的连接并不难。这是否意味着即使为最高的集群层级(M700,33.26 美元/小时)付费,该应用程序也不能拥有超过 12800 个(128000 个连接/每个客户端 10 个打开的连接)活跃用户?

0 投票
0 回答
144 浏览

javascript - 过滤具有反向关系的对象时超出最大调用堆栈大小(领域 10.1.1)

给出以下架构:

在将一些人和其中几个人添加到公司后,我尝试按年龄过滤并使用代码获取超过 30 年的人realm.objects("Person").filtered("age > 30");

此查询的结果是以下错误:

超出最大调用堆栈大小。

我希望有一个符合要求的人员列表,但我有这个错误。我已经看到,在 10.0.0 版本中,这个错误应该是针对toJSON()功能修复的。如果我尝试按其 id 过滤对象,一切正常,但是一旦我尝试获取一些对象的列表,我就会收到此错误。

有人对此有解决方案吗?

我正在使用 --> 领域:10.1.1 React Native:0.62.2 节点:10.22.1

0 投票
0 回答
77 浏览

webpack - MongoDB Realm 函数应该如何共享 JS 代码?

交叉发布在https://developer.mongodb.com/community/forums/t/how-should-realm-functions-share-js-code/15052

所以我正在拼凑一个我想要的稍微复杂的应用程序:

  • 我的 Realm 函数用于共享内部编写的代码(我的项目结构中文件夹中的片段)
  • 我的 Realm 函数来使用 NPM 模块

我发现了这个,https://developer.mongodb.com/community/forums/t/javascript-folders-for-sharing-code-between-mongodb-realm-functions/13565,这向我表明一个解决方案是来了,但我想知道这里的每个人是如何做到的。

我试图避免不得不webpack或以其他方式捆绑我的内部片段来解决我的第一个问题,并且还必须上传一个node_modules档案来解决我的第二个问题。

我试图内联我所有的依赖项,但还没有找到一种方法可以产生令 Realm 满意的输出(Realm 似乎总是发现生成的 JS 存在某种语法问题)。

有人有webpack.config他们可以分享的食谱或其他食谱吗?

FWIW,我们在 Typescript@4 上并尝试将各种 ES 级别降低到 ES5,但似乎没有什么合适的。

0 投票
1 回答
32 浏览

javascript - 未捕获的承诺拒绝:无法评估模块“nanoid”的源:node_modules/nanoid/index.cjs

我正在尝试使用 nanoid ( https://www.npmjs.com/package/nanoid/v/2.1.2 )

从 MongoDB 领域运行时,但它抛出:

这就是我可以从 Realm Dashboard 中看到的所有错误。

可能缺少什么?

0 投票
0 回答
45 浏览

intellij-idea - 为 Realm 构建一个 IDEA 插件

我正在开发一个 MongoDB Realm 应用程序,在线函数编辑器对我来说不是那么直观,使用真实 IDE 的体验不如我们使用 IntelliJ/Webstorm 等体验的体验。

因此,我导出了我的应用程序并将其加载到 Webstorm 中,但由于它基本上是一个无服务器应用程序,因此功能需要在云运行时上运行。在线编辑器提供了一种编辑函数并单击即可运行它的集成方式,但这显然在您导出项目时不可用:

在此处输入图像描述

在云功能编辑器上,测试此方法的一种方法processCsv是通过云控制台:

它将在同一控制台上运行并记录该功能。

但是,有一个 Admin API 可用于更新云功能并触发它们。这是一个好消息,也是通过插件集成到 Webstorm 等 IDE 的一种可能方式。

Realm Admin Function API允许

  1. 更新云功能
  2. 执行云功能

所以我的问题是:

  • 在构建 IDEA 插件时,是否可以创建一个将绑定source.js到函数的映射(稍后将被调用)
  • 是否可以监视该文件并保存更改,它将自动调用更新函数以根据绑定函数名称推送源代码更改
  • 构建插件的运行终端以实际执行以下操作的最佳方法是什么:

在此处输入图像描述