问题标签 [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.
scala - 用于格式化 json 的案例类 - 有和没有对象 id
我正在编写一个 play2 应用程序,它通过rest/json 获取数据并使用reactivemongo 将其存储在mongodb 中。
我正在使用从案例类构建的模型和implicit val myFormat = Json.format[myCaseClass]
目前我有一个来自 mongodb 的对象的案例类。它们包含 _id 字段,一切正常。进来的新对象自然没有这个 id 字段,因此Json.fromJson[myCaseClass](req.body)
验证器失败。
我真的必须为新对象创建另一个案例类,还是有一个更干燥和优雅的解决方案而不复制类和删除_id?
scala - 使用 reactivemongo 插入文档并随后获取它
将值插入持久层并返回结果对象时,通常最好获取新创建的实体,而不是再次返回输入数据。
当我尝试使用 reactmongo 在 Scala 中执行此操作时,我偶然发现了我的语言技能。
findOne 的签名在哪里:
我收到以下错误:
如果我返回 newUser 对象,一切都很好。
我想我对这里发生的事情有一个普遍的误解——也许有一种更好的方法可以一次性获取创建的对象。
scala - 使用 reactivemongo 在 mongo 中寻找可能的 slug
我正在尝试使用 Play2 和 reactivemongo 在 mongodb 中找到可用的 slug。我想出了以下递归方法。
我收到以下错误
我在更改返回类型、映射收益结果等方面玩了很多,但不知何故,我认为可能有一个更简单、简洁和正确的解决方案。这一切都归结为有一个递归函数,它调用我认为的另一个异步函数。
如果我将 findSlug 的返回类型更改为 Future[String] 我得到
什么是正确和惯用的解决方案?
reactivemongo - ReactiveMongo 强制查询在从属设备上执行
ReactiveMongo 有没有办法强制在从属设备上进行查询?
目前我正在使用 slaveOk,但它不能保证查询在从属设备上运行。
collection.find(query).options(QueryOpts().slaveOk)
slaveOk 的文档:
/** Toggles SlaveOk: The query is might be run on a secondary. */
scala - 处理 ReactiveMongo 中的错误
我正在使用 Play Framework 2.1.5 和 ReactiveMongo 0.9 使用 ReactiveMongo Play 插件开发一个简单的 RESTful Web 服务。自从我最后一次使用 Play Framework 已经有很长时间了。我正在尝试使用以下方法插入文档:
我预计一旦查询执行失败(例如由于索引中的重复值),我会毫无问题地处理它。但它的工作方式不同 - 如果失败,则抛出 a而不是用适当的值DatabaseException
满足 the 。Promise[LastError]
请问我错过了什么?
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 的处理方式是什么?
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?如果您能对我的问题有所了解,我将不胜感激。非常感谢您的帮助。
json - 如何在用作表单的案例类中实现验证(使用 Json.fromJson)
我正在使用 TypeSafe 激活器模板作为应用程序的基础(play+reactivemongo+knockoutJS)。
我正在尝试创建一个用户,在此过程中我想验证他们提供的国家/地区是否已经在数据库中。但由于程序的结构,我发现很难进行验证。
代码
我的问题是折叠:我需要验证数据库中是否存在国家,并且我需要获取创建用户的国家(这是一个异步操作)。
我最好的想法是让 UserForm 实现一些提供“折叠”方法的东西(如 Json...折叠),因此如果找不到该国家/地区,我可以返回无效。如果我知道它存在,那么构建 MongoDB 查询、等待它并在选项上执行 .get 可能会更容易,因为我已经知道它存在。
希望我说清楚了。
有任何想法吗?
[编辑] 接受了以下建议,并进行了一些更改:您给了我方向,但我对其进行了一些修改:我将 UserForm 类更改为将 Country 作为参数而不是 [string] 国家名称。我想我会将列表传递给将呈现给列表的模板,并且所选国家将被 JSON 化并按原样上传(国家有一个 json.format)。
我在 CountryDao 中创建了 exists(c: Country) 方法,它只是对数据库进行查找并返回结果。
然后,我将 saveUser 更改为:
它编译。让我们看看它是否也有效:)
无论如何,我认为现在解决了它。谢谢你
mongodb - Reactivemongo 将地图序列化为 BSONDocument
我使用 ReactiveMongo 驱动程序定义BSONDocumentWriter
了 s 来将域对象(案例类)映射到要在 MongoDB 中持久保存的 BSON 文档。对于案例类来说,定义作者是非常直接的(虽然乏味且容易出错:我希望有一个类似 Salat 的解决方案)。但是,我似乎无法对 a 做同样的事情Map[String,Any]
(其中值可以是数字、日期或字符串类型)。我找到了一个为地图定义通用编写器(和读取器)的代码示例:
BSONDocumentWriter
但是如果type没有隐式,则这不起作用V
,即代码段:
不编译:
我想也许作者应该写 aBSONValue
而不是 aBSONDocument
所以我修改了这个例子如下:
为了简单起见,我尝试将其Int
用作值类型,但再次使用以下代码段:
不编译:
如果上述方法有效,我可以使用一些基类作为值类型并定义其隐式编写器。
我不确定为什么会发生这种情况以及如何解决它。也许我错过了一些明显的东西?想法?
spray - Scala Spray + Reactive Mongo 日志记录
我正在使用喷雾罐和反应式 mongo 运行应用程序。我不知道如何打开反应式 mongo 的调试日志记录。我的 application.conf 文件 (\src\main\resources\application.conf) 如下所示: