问题标签 [play-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 投票
1 回答
261 浏览

scala - 将 ReactiveMongo Play 2.3 应用程序从 2.6 升级到 3.0

我有一个运行良好的 Scala Play 2.3 应用程序,使用在 Heroku 上针对 MongoLab 2.6 数据库运行的 ReactiveMongo,现在 MongoLab 已将他们的沙箱数据库更新到 3.0,我无法启动我的应用程序。

我已将本地数据库更新到 3.0。

我已按照http://reactivemongo.org/releases/0.11/documentation/tutorial/play2.html 2.3 的说明进行操作,但我仍然得到如下堆栈跟踪:

---(从 SBT 运行应用程序,启用自动重新加载)---

[info] play - 在 /0:0:0:0:0:0:0:0:9000 上侦听 HTTP

(服务器已启动,使用 Ctrl+D 停止并返回控制台...)

[info] 应用程序 - ReactiveMongoPlugin 正在启动... [info] 应用程序 - ReactiveMongoPlugin 已成功启动 db 'sites'!服务器:[localhost:27017] [info] play - 应用程序已启动(开发)[ERROR] [10/02/2015 11:34:11.472] [play-akka.actor.default-dispatcher-7] [ActorSystem(play) ] 来自线程 [play-akka.actor.default-dispatcher-7] 的未捕获错误正在关闭 JVM,因为在 akka.actor.ActorCell.receiveMessage 处启用了“akka.jvm-exit-on-fatal-error” java.lang.AbstractMethodError (ActorCell.scala:516) atakka.actor.ActorCell.invoke(ActorCell.scala:487) atakka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) atakka.dispatch.Mailbox.run(Mailbox.scala: 220) 在 akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.

[错误] [10/02/2015 11:34:11.473] [play-akka.actor.default-dispatcher-8] [ActorSystem(play)] 来自线程 [play-akka.actor.default-dispatcher-8 的未捕获错误] 由于启用了“akka.jvm-exit-on-fatal-error”而关闭 JVM -exit-on-fatal-error' 在 akka.actor.ActorCell.invoke(ActorCell.scala:487) 的 akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) 为 ActorSystem[play] java.lang.AbstractMethodError 启用) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) at akka.dispatch.Mailbox.run(Mailbox.scala:220) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) at scala .concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at akka.actor.ActorCell.create(ActorCell.scala:580) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala .concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka .actor.ActorCell.systemInvoke(ActorCell.scala:478)concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)

我已将我的引用从 ...default.BSONCollection 更新为 ...bson.BSONCollection 等。

我正在使用以下配置:

我的应用程序依赖项是:

请有人可以就上述堆栈跟踪的实际含义提出建议,因为我无法弄清楚?

0 投票
1 回答
209 浏览

json - 验证 JsonReaders - Scala - ReactiveMongo 时出现 RuntimeException

我有一个案例类来存储我插入到我的用户中的 userOption。我的用户的结构是这样的:

现在,我想添加一个附加选项:喜爱通知。我更改了我的案例类,添加了 favoriteNotification:

由于我添加了 favoriteNotification,我得到了一个 RuntimeException:

但是我的代码中没有列表。我究竟做错了什么?

谢谢你的帮助

0 投票
0 回答
1037 浏览

java - ReactiveMongo:需要将 java.time.LocalDate 转换为 reactivemongo.bson.BSONDateTime

我的要求是仅设置BSONDateTime为特定数据。从我找到了确切的数据,但是在我的输出中java.util.Date尝试转换时是错误的。BSONDateTime以下是我的转换代码:

输出

相位:2015 年 10 月 16 日星期五 00:00:00

实际: 2015 年 10 月 15 日星期五 18:30:00

更新问题

我的基本要求是,我想使用查询在 mongodb 数据中设置和比较我的日期。喜欢:我的 mongodb 文档具有以下结构

我的第一个查询要求是使用以下代码将过期日期设置为当前日期:

从这段代码中,我找到了上午 12 点的当前日期。我正在将日期转换为milliSeconds并创建BSONDateTime对象并使用响应式 mongo 查询设置值,如下所示:

我的第二个查询要求是使用以下查询匹配“expiredOn”日期:

现在,当我在数据库中设置日期时,我的 mongo db 存储无效的日期值,我在上面也提到过:

输出

相位:2015 年 10 月 16 日星期五 00:00:00

实际: 2015 年 10 月 15 日星期五 18:30:00

我需要存储特定数据并将查询与特定日期进行比较。

0 投票
2 回答
758 浏览

mongodb - MongoDB 3 的 Play-ReactiveMongo 身份验证失败

我在使用 play-reactivemongo 连接到 MongoDB 3 时遇到问题,并且遇到了“'未授权查询 XXX'(代码 = 13)”问题。当 MongoDB 在没有 --auth 的情况下启动时,该程序运行得非常好。

数据库版本应为 3.0.4,如日志所示。

我使用了 0.11.7 版 play2-reactivemongo 插件。

我已经像这样在 mongodb.uri 中指定了 authMode。

我在 mongodb.log 中发现了以下错误。

为什么使用 MONGODB-CR 而不是 SCRAM-SHA-1?假设 SCRAM-SHA-1 应该是默认值,对吧?

0 投票
0 回答
125 浏览

mongodb - ReactiveMongo 参考注释

我有一些关于 ReactiveMongo 插件的一般性问题。我之前在 Play 中使用过 Morphia,现在我们已经迁移到 scala,我想澄清一些事情。

1) 使用类似于 Morphia 的 @References 注释是一种好习惯吗?例如https://github.com/mongodb/morphia/wiki/ReferenceAnnotation 例如,Morphia 将以下对象保存在数据库中,并且它们有lazy_load,如果需要,它会检索对象:

2)如何在 ReactiveMongo 中实现这一点?是否可以自动执行此操作,或者我应该手动创建另一个字段,例如:referenceName:BSONObjectID 或referenceName:String?

0 投票
0 回答
425 浏览

mongodb - 使用 play reactive mongo 查询 mongo ISODate

我正在尝试在 mongodb 中查询日期。

日期存储为ISODate("2015-10-08T05:48:55.778+0000").

现在我应该如何查询$gte$lte

我一直在使用 Play 插件进行响应式 mongo

要从 mongo shell 查询,我需要使用 => 进行查询

{"endDateTime":{"$eq": new Date("2017-10-08T05:48:55.778+0000")}

或者,

{"endDateTime":{"$eq": ISODate("2017-10-08T05:48:55.778+0000")}

那么,我应该怎么做才能使用 play reactive mongo 来查询它。我一直在使用 JodaTime。我正在生成查询的 Json 对象,并find()直接提供给 api。

*是的,SO中有很多关于这个话题的建议,但在这种情况下,它们似乎都没有帮助我。如果需要,我可以提供更多信息。

更新答案:

转换日期时,我似乎有些困惑。

当我尝试将 String Date 转换为Joda DateTime时,当我在控制台中打印它时,它会显示为timestamp,但是当我将它发送到响应式 mongofind时,它会转换为某种形式的字符串 date "2015-10-08T05:48:55.778+0000"

因此,我必须检索毫秒转换并将其发送到相应的 api,mongo 将毫无问题地处理。

0 投票
1 回答
1361 浏览

scala - 没有为类型 model.User 找到作为 JsObject 的 Json 序列化程序。尝试为此类型实现隐式 OWrites 或 OFormat

我正在使用带有 Scala 和 Reactive Mongo 的 Play 框架将对象保存到我的 mongodb 数据库中。按照这个http://reactivemongo.org/releases/0.10/documentation/bson/usage.html我想出了以下代码:

我创建了隐式编写器以转换为 BsonDocument,因此我希望它能够正确转换并保存到数据库中。

但是,当我编译时,我得到:

我正在导入No Json 序列化程序中提到的必要包作为 JsObject 找到类型 play.api.libs.json.JsObject。我也在导入 json.JsonFormatters._ 其中包括:

然而,它仍然返回相同的错误,告诉我它无法从 JsObject 转换为 User。考虑到我的 User 实体只是一个包含 5 个字段的案例类,我看不到 JsObject 在这里。

有任何想法吗?我错过了什么?

0 投票
2 回答
5161 浏览

json - 如何将 JSON 字符串转换为 BSONDocument

我有以下使用reactivemongo驱动程序的函数,实际上在写入数据库方面做得很好。

但该函数的局限性在于 JSON 被硬编码为 BSONDocument。如何更改它以便可以将任何 JSON 字符串传递给函数?

简而言之:如何将 JSON 字符串转换为 BSONDocument?

更新 2:

现在的问题是import reactivemongo.play.json._被视为未使用的导入(在我的 IntelliJ 上),我仍然收到以下错误

0 投票
2 回答
1144 浏览

scala - 从给定的@inject 类实例化一个 val

如何从这个类中实例化一个对象?我有另一个类,我想使用MongoUtils下面定义的类。这个类来自reactivemongo

到目前为止,我已经尝试过val mongoutil = new MongoUtils(reactiveMongoApi = play.modules.reactivemongo) ,但显然它不起作用。

0 投票
1 回答
174 浏览

scala - 不推荐使用特征 BSONFormats 中的对象 BSONDocumentFormat:0.11.9

我有一个以下函数,它接收输入 JSON 并使用"com.eclipsesource" %% "play-json-schema-validator" % "0.6.2". 在我开始收到有关已弃用库的警告之前,整个设置运行良好。如您所见,我正在使用Ok(Json.toJson(result)))将类型的结果scala.List[BSONDocument]转换为 JSON。这是使用import play.modules.reactivemongo.json.BSONFormats._库完成的。我真的很喜欢这种转换的简单性,但是,我收到以下警告:

object BSONDocumentFormat in trait BSONFormats is deprecated: 0.11.9

而且,这是我的实际功能:

}

有没有其他方法可以做到这一点?为什么库开发人员会删除如此有用的功能?