我花了3个小时的时间,并没有成功尝试检索具有所有属性的BSONDocument。我不知道为什么我只获得第一个属性......其他属性在哪里?
我写了以下测试
describe("Testing reactive map user") {
it(" convert an user to BSONDocument") {
val basicProfile = BasicProfile("1", "1", Option("pesk"), Option("pesk"),
Option("pesk pesk"), Option("pesk@gmail.com"), Option("url"),
AuthenticationMethod.UserPassword, Option(new OAuth1Info("token", "secret")),
Option(new OAuth2Info("token", Option("secret"))),
Option(new PasswordInfo("hasher", "password", Option("salt"))))
val user = User(Option(BSONObjectID.generate), basicProfile, List(), "31.55, 53.66", List[User](), Option(DateTime.now))
val result = User.UserBSONWriter.write(user)
assert(result.getAs[String]("providerId") == "1")
}
}
UserBSONWriter
implicit object UserBSONWriter extends BSONDocumentWriter[User] {
def write(user: User): BSONDocument = {
val doc = BSONDocument(
"_id" -> user.id.getOrElse(BSONObjectID.generate),
"providerId" -> BSONString(user.basicProfile.providerId),
"userId" -> BSONString(user.basicProfile.userId))
println(doc)
doc
}
}
我附上了控制台的屏幕截图。我正在尝试获取值providerId,它位于BSONObjectID旁边,但我只能得到第一个属性。
如果有人可以帮助我,我会非常感激。我还有其他评论,因为scala的BSON API使用的隐式系统,我感到头疼。找到一些关于这些隐式转换的文档并不是一件容易的事。
println(doc)的内容
BSONDocument(非空)