Lift-mongo-record:mongo 集合中的空 JsonObjectField

发布于 2024-11-15 17:37:18 字数 1019 浏览 0 评论 0原文

我正在尝试使用 JsonObjectField 保存记录(使用 lift-mongo- 在Play框架中记录)但在数据库集合中它是空的。 这是我的代码:

定义类:

class Wish extends MongoRecord[Wish] with MongoId[Wish] {
  def meta = Wish
  object body extends StringField(this, 1024)
  object tags extends MongoListField[Wish, String](this)
  object form extends JsonObjectField[Wish, Criterion](this, Criterion) {
    def defaultValue = null.asInstanceOf[Criterion]
  }
}
object Wish extends Wish with MongoMetaRecord[Wish] {
  override def collectionName = "wishes"
}

case class Criterion (key: String, value: String) extends JsonObject[Criterion] {
  def meta = Criterion
}
object Criterion extends JsonObjectMeta[Criterion]

我尝试以这种方式保存记录:

Wish.createRecord.body("body").tags(List("tags", "test")).form(new Criterion("From", "Arbat")).save

在 mongodb 集合中,我有类似的内容:

{ "_id" : ObjectId("4dfb6f45e4b0ad4484d3e8c6"), "body" : "body", "tags" : [ "tags", "test" ], "form" : { } }

我做错了什么?

I'm trying to save a record with JsonObjectField (using lift-mongo-
record in Play framework) but it is empty in database collection.
That's my code:

Define classes:

class Wish extends MongoRecord[Wish] with MongoId[Wish] {
  def meta = Wish
  object body extends StringField(this, 1024)
  object tags extends MongoListField[Wish, String](this)
  object form extends JsonObjectField[Wish, Criterion](this, Criterion) {
    def defaultValue = null.asInstanceOf[Criterion]
  }
}
object Wish extends Wish with MongoMetaRecord[Wish] {
  override def collectionName = "wishes"
}

case class Criterion (key: String, value: String) extends JsonObject[Criterion] {
  def meta = Criterion
}
object Criterion extends JsonObjectMeta[Criterion]

I try to save record in that way:

Wish.createRecord.body("body").tags(List("tags", "test")).form(new Criterion("From", "Arbat")).save

And in mongodb collection I have smth like:

{ "_id" : ObjectId("4dfb6f45e4b0ad4484d3e8c6"), "body" : "body", "tags" : [ "tags", "test" ], "form" : { } }

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

以酷 2024-11-22 17:37:18

你的代码看起来不错。也许尝试使用 MongoCaseClassField 像:


object form extends MongoCaseClassField[Wish, Criterion](this)

case class Criterion (key: String, value: String){}

//btw you can leave out the "new" for case classes - it calls 
//the automatically generated apply method
Wish.createRecord.body("body").tags(List("tags", "test"))
            .form(Criterion("From","Arbat")).save

这是 MongoCaseClassListField 的示例:


object form extends MongoCaseClassListField[Wish, Criterion](this)

Wish.createRecord.body("body").tags(List("tags","test"))
       .form(List(Criterion("key1","val1"), Criterion("key2", "val2"))
       .save


Your code looks fine. Maybe try using MongoCaseClassField like:


object form extends MongoCaseClassField[Wish, Criterion](this)

case class Criterion (key: String, value: String){}

//btw you can leave out the "new" for case classes - it calls 
//the automatically generated apply method
Wish.createRecord.body("body").tags(List("tags", "test"))
            .form(Criterion("From","Arbat")).save

Here's an example for MongoCaseClassListField:


object form extends MongoCaseClassListField[Wish, Criterion](this)

Wish.createRecord.body("body").tags(List("tags","test"))
       .form(List(Criterion("key1","val1"), Criterion("key2", "val2"))
       .save


~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文