私はscalaの初心者であり、Rubyのバックグラウンドを持っているため、scalatra、liftweb mongoレコードを使用したmongodb、およびjsonのシリアライゼーションとデシリアライゼーション用のargonautを使用するWebサービスでjson応答をレンダリングするのに問題があります。
ただし、 http: //argonaut.io/ に示されている例に基づいて、net.liftweb.mongo.record ライブラリを使用する場合にこれがどのように機能するかを理解できません。
これをコンパイルすると、type mismatch
. エラーの説明は、コード スニペットの後に続きます。
パッケージ firstscalatraapp org.scalatra をインポート net.liftweb.mongodb._ をインポート import net.liftweb.mongodb.record.MongoRecord import net.liftweb.mongodb.record.field.ObjectIdPk import net.liftweb.record.field.StringField import net.liftweb.record.field.IntField net.liftweb.record.field.PasswordField のインポート net.liftweb.record.field.DateTimeField のインポート import net.liftweb.mongodb.record.MongoMetaRecord アルゴナウトをインポート._ アルゴノートをインポート._ case class Person private extends MongoRecord[Person] with ObjectIdPk[Person] { デフメタ=人 object age extends IntField(this, 3) オブジェクト名 extends StringField(this, 29) object created_at extends DateTimeField(this) object password extends PasswordField(this) } object Person は MongoMetaRecord[Person] { 暗黙の def PersonCodecJson: CodecJson[Person] = casecodec3(Person.apply, Person.unapply)("name", "age", "things") }
私が得るエラーは
[error] found : () => firstscalatraapp.Person
[error] required: (?, ?, ?) => ?
[error] casecodec3(Person.apply, Person.unapply)("name", "age", "things")
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
コンストラクターはパラメーターを受け入れず、mongo ライブラリーval
はクラスに必要なフィールドを生成しているように見えるため、これは論理的に思えます (リフト mongo ラッパーが何をするのかまだ完全には理解していません)。
では、person 型のオブジェクトをシリアライズできるように暗黙的に定義するにはどうすればよいでしょうか。
また、コレクションを扱っているときにシリアライゼーション機能を定義するにはどうすればよいですか。たとえば、私が持っているときList[Person]
。
前もって感謝します。これについて何か助けていただければ幸いです。