1
私はlift/mongodbと1対1の関係の簡単な例を探しています。 私はこの1つのようなシンプルなMongoRecordを作成することができるよ:lift/mongodbと1対1の関係を作成する方法
class Blob extends MongoRecord[Blob] with MongoId[Blob] {
def meta = Blob
object name extends StringField[Blob](this,10)
}
object Blob extends Blob with MongoMetaRecord[Blob]{
}
を今、私はそれを行うことができるか、BLOBに親/子関係を追加したいですか?
EDIT:
私はfinaly(このguideは私をたくさん助けて)私の問題を解決する方法を見つけました。
MongoRecord:
package code.model
import net.liftweb.mongodb.record.{MongoMetaRecord, MongoRecord}
import net.liftweb.record.field.StringField
import net.liftweb.mongodb.record.field.{ObjectIdRefField, ObjectIdPk}
class Blob extends MongoRecord[Blob] with ObjectIdPk[Blob]{
def meta = Blob
object name extends StringField[Blob](this,10)
object child extends ObjectIdRefField(this,Blob)
}
object Blob extends Blob with MongoMetaRecord[Blob]
これは私が作成し、レコードを読み取る方法です:
package code.lib
import net.liftweb.http._
import code.model.Blob
import net.liftweb.common.{Full}
object REST {
lazy val blob: LiftRules.DispatchPF = {
case Req("api" :: "blob" :: Nil, suffix, GetRequest) => {
() => {
val blobs = Blob.findAll.map(blob => {
val child = Blob.find(blob.child.is)
val childName = if (child.isDefined) child.open_!.name else "?"
<blob>
<id>{blob.id.is}</id>
<name>{blob.name}</name>
<child_name>{childName}</child_name>
</blob>
})
Full(XmlResponse(<blobs>{blobs}</blobs>))
}
}
case Req("api" :: "blob" :: Nil, suffix, PostRequest) => {
() => {
val randID = (scala.math.random * 999).toInt
val child = Blob.createRecord
child.name("child_" + randID)
child.save
val blob = Blob.createRecord
blob.name("blob_" + randID)
blob.child(child.id.is)
blob.save
Full(XmlResponse(<result>{blob.id.is}</result>))
}
}
}
}
I'amそれを行うための正しい方法だ場合は、まだわからないので、ここで は結果であり、 : コメントは大歓迎です!