问题标签 [reactivemongo]

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 投票
2 回答
595 浏览

scala - 用于格式化 json 的案例类 - 有和没有对象 id

我正在编写一个 play2 应用程序,它通过rest/json 获取数据并使用reactivemongo 将其存储在mongodb 中。

我正在使用从案例类构建的模型和implicit val myFormat = Json.format[myCaseClass]

目前我有一个来自 mongodb 的对象的案例类。它们包含 _id 字段,一切正常。进来的新对象自然没有这个 id 字段,因此Json.fromJson[myCaseClass](req.body)验证器失败。

我真的必须为新对象创建另一个案例类,还是有一个更干燥和优雅的解决方案而不复制类和删除_id?

0 投票
1 回答
740 浏览

scala - 使用 reactivemongo 插入文档并随后获取它

将值插入持久层并返回结果对象时,通常最好获取新创建的实体,而不是再次返回输入数据。

当我尝试使用 reactmongo 在 Scala 中执行此操作时,我偶然发现了我的语言技能。

findOne 的签名在哪里:

我收到以下错误:

如果我返回 newUser 对象,一切都很好。

我想我对这里发生的事情有一个普遍的误解——也许有一种更好的方法可以一次性获取创建的对象。

0 投票
1 回答
132 浏览

scala - 使用 reactivemongo 在 mongo 中寻找可能的 slug

我正在尝试使用 Play2 和 reactivemongo 在 mongodb 中找到可用的 slug。我想出了以下递归方法。

我收到以下错误

我在更改返回类型、映射收益结果等方面玩了很多,但不知何故,我认为可能有一个更简单、简洁和正确的解决方案。这一切都归结为有一个递归函数,它调用我认为的另一个异步函数。

如果我将 findSlug 的返回类型更改为 Future[String] 我得到

什么是正确和惯用的解决方案?

0 投票
1 回答
344 浏览

reactivemongo - ReactiveMongo 强制查询在从属设备上执行

ReactiveMongo 有没有办法强制在从属设备上进行查询?

目前我正在使用 slaveOk,但它不能保证查询在从属设备上运行。

collection.find(query).options(QueryOpts().slaveOk)

slaveOk 的文档:

/** Toggles SlaveOk: The query is might be run on a secondary. */

0 投票
3 回答
1321 浏览

scala - 处理 ReactiveMongo 中的错误

我正在使用 Play Framework 2.1.5 和 ReactiveMongo 0.9 使用 ReactiveMongo Play 插件开发一个简单的 RESTful Web 服务。自从我最后一次使用 Play Framework 已经有很长时间了。我正在尝试使用以下方法插入文档:

我预计一旦查询执行失败(例如由于索引中的重复值),我会毫无问题地处理它。但它的工作方式不同 - 如果失败,则抛出 a而不是用适当的值DatabaseException满足 the 。Promise[LastError]请问我错过了什么?

0 投票
0 回答
232 浏览

mongodb - 什么时候对字段使用空值,什么时候不应该在 MongoDB 中写入该字段?

我目前正在使用 reactivemongo 和 mongodb,我发现了一些我不知道如何处理的东西。

假设我有一个案例类UserInfo

这个对象代表一个用户。用户总是有一个名字,并且可能有一个电子邮件或手机号码。

在 UserInfo 伴随对象中,我定义了 UserInfo 的写入和读取。插入此文档时,UserInfo 会保存到我的 Mongo 实例中,并且 None 的字段将保存为 null。由于我有很多用户,我想在firstName + email上设置索引,在firstName + mobile上设置第二个索引:

我插入一个带有名字和电子邮件的用户信息。其余字段为无。

现在是我不知道如何处理的部分。由于 None 写入 null,所以 null 值保存在我的用户信息集合中。我尝试插入相同的名字和电子邮件,这应该会失败并且确实会失败,但原因是错误的。就我而言,原因是为 jakob 和 null 创建了一个索引:

据我了解 sparse 仅适用于缺失值,并且由于 null 是一个值,因此 sparse 在这种情况下不起作用。那么我应该如何处理呢?是否可以使用可能为空的值创建索引?或者我应该以其他方式处理我的 None 值吗?也许我可以更改写入,以便如果 None 写入空 [T] 参数。MongoDB 的处理方式是什么?

0 投票
2 回答
4487 浏览

mongodb - 带有反应式 mongo 和 Scala 的嵌套文档

我正在尝试通过 Scala 将嵌套文档存储在 MongoDB 中。该文档如下所示:

基本上我想存储嵌套描述,在项目文档中可能是多种语言。

我写的代码是:

但是,它给了我编译错误,例如

重载方法值适用于替代方案:[错误](生产者:reactivemongo.bson.Implicits.Producer [(String,reactivemongo.bson.BSONValue)],生产者:reactivemongo.bson.Implicits.Producer [(String,reactivemongo.bson.BSONValue) )] )reactivemongo.bson.AppendableBSONDocument [error] (els: (String, reactivemongo.bson.BSONValue) )reactivemongo.bson.AppendableBSONDocument [error] 不能应用于 ((String, reactivemongo.bson.BSONObjectID), List[LocaleText ])...

基本上 Scala 不喜欢“描述”这一行 -> BSONArray(project.description)

但是,尽管我不能使用列表/数组来允许两种以上的语言,但以下替代方法仍然有效:

如何将 Project.description(LocaleText 列表)转换为 Mongo 的 BSONArray?如果您能对我的问题有所了解,我将不胜感激。非常感谢您的帮助。

0 投票
1 回答
108 浏览

json - 如何在用作表单的案例类中实现验证(使用 Json.fromJson)

我正在使用 TypeSafe 激活器模板作为应用程序的基础(play+reactivemongo+knockoutJS)。

我正在尝试创建一个用户,在此过程中我想验证他们提供的国家/地区是否已经在数据库中。但由于程序的结构,我发现很难进行验证。

代码

我的问题是折叠:我需要验证数据库中是否存在国家,并且我需要获取创建用户的国家(这是一个异步操作)。

我最好的想法是让 UserForm 实现一些提供“折叠”方法的东西(如 Json...折叠),因此如果找不到该国家/地区,我可以返回无效。如果我知道它存在,那么构建 MongoDB 查询、等待它并在选项上执行 .get 可能会更容易,因为我已经知道它存在。

希望我说清楚了。

有任何想法吗?

[编辑] 接受了以下建议,并进行了一些更改:您给了我方向,但我对其进行了一些修改:我将 UserForm 类更改为将 Country 作为参数而不是 [string] 国家名称。我想我会将列表传递给将呈现给列表的模板,并且所选国家将被 JSON 化并按原样上传(国家有一个 json.format)。

我在 CountryDao 中创建了 exists(c: Country) 方法,它只是对数据库进行查找并返回结果。

然后,我将 saveUser 更改为:

它编译。让我们看看它是否也有效:)

无论如何,我认为现在解决了它。谢谢你

0 投票
1 回答
2237 浏览

mongodb - Reactivemongo 将地图序列化为 BSONDocument

我使用 ReactiveMongo 驱动程序定义BSONDocumentWriter了 s 来将域对象(案例类)映射到要在 MongoDB 中持久保存的 BSON 文档。对于案例类来说,定义作者是非常直接的(虽然乏味且容易出错:我希望有一个类似 Salat 的解决方案)。但是,我似乎无法对 a 做同样的事情Map[String,Any](其中值可以是数字、日期或字符串类型)。我找到了一个为地图定义通用编写器(和读取器)的代码示例

BSONDocumentWriter但是如果type没有隐式,则这不起作用V,即代码段:

不编译:

我想也许作者应该写 aBSONValue而不是 aBSONDocument所以我修改了这个例子如下:

为了简单起见,我尝试将其Int用作值类型,但再次使用以下代码段:

不编译:

如果上述方法有效,我可以使用一些基类作为值类型并定义其隐式编写器。

我不确定为什么会发生这种情况以及如何解决它。也许我错过了一些明显的东西?想法?

0 投票
1 回答
1310 浏览

spray - Scala Spray + Reactive Mongo 日志记录

我正在使用喷雾罐和反应式 mongo 运行应用程序。我不知道如何打开反应式 mongo 的调试日志记录。我的 application.conf 文件 (\src\main\resources\application.conf) 如下所示: