0
文字列のマップを格納するにはUserクラスが必要です.APIでMongoMapFieldが見えたので、適切と思われたので使用しました。ここに私のコードです:mongoで可変マップを作成する最も良い方法は何ですか?
class User private() extends ProtoAuthUser[User] with ObjectIdPk[User] {
def meta = User
object oauth extends MongoMapField[String, String]("") {
def setToken(provider: String, token: String) {this.value += (provider -> token) }
def getToken(value: String) = {
if(!this.value.isEmpty) Full(this.value.get(value) match {
case Some(value) => value
case None => ""
})
else Empty
}
}
}
MongoMapFieldは(私の仮定から)不変であるので、この場合のsetTokenが機能しないと、次のコードは、いずれかの動作しません:
def setToken(provider: String, token: String) { this.value = this.value + (provider -> token) }
は誰が何であるかを知っていますユーザーにも添付されているmongoの文字列のマップを作成/更新する最も良い方法は?
感謝=)
これは完璧に働きました!ありがとうございました! MongoMapField [String、String]をMongoMapField [User、String]に変更するだけでした。 OauthInfoがケースクラスであるMongoMapField [User、OauthInfo]を使用するとどうなりますか?それは正しく動作するようだが、私はUser.currentUser.open _!保存すると、保存されません。なぜこれが当てはまるのか知っていますか? – user646658
MongoMapFieldは、ケースクラスをサポートしていません。ただし、asDBObject関数とfromDBObject関数をオーバーライドすることで、動作させることができます。 –