を書いていないが、DBは、これは何回も呼ばれているにもかかわらず、作成されることは決してありません:MongoのScalaの非同期クライアントは、このコードを使用して新しいScalaの非同期ドライバとアップサートしようとして
override def insertOrUpdateOne(user: UserNew): Future[Unit] = {
users.replaceOne(equal("_id", user._id), user)
.toFuture
.map(_ =>())
}
のmongoクライアントは罰金作成し、コレクションを作成します実際にはdbは作成されません(最初の書き込みで発生するはずです)。私は、casbahを使用し、同期的に動作している他のコードを持っています。
users
は、私からの構文的な砂糖のないモンゴーのコレクションです。
toFuture
サブスクリプション(書き込みをトリガーする必要がありますか?)が、まだ動作しません。私はいくつかのコレクションをカスバと混同しています.1つは非同期クライアントに、もう1つは非同期で動作します。
アイデア?
'insertOrUpdateOne'メソッドはどのように呼び出されていますか?未来は別のスレッドが作成されたときに非同期で実行され始めます。新しいレコードにアクセスする前に未来が完了するのを待っていますか? –
私はそれを作成して行く '未来'を待つことはありません。 'insertOrUpdate'の後に何もする必要はありません。同期の一貫性は必要ありません。私が 'findOne'を実行すると、' .map'で処理して、実際に取得されたデータが返ってくると処理するので、非同期でも処理します。これは、writeが決して引き起こされないこと、そしてObservableとサブスクリプション( 'toFuture' afaikによって処理されるはずです)を直接使用しているわけではないので、私は何がトリガーされるのか不思議です。私が 'replaceOne'を実行するとき、私はそれを待つ必要がなくても起こることを期待しています。 – pferrel
ああ、でも@Chris Cあなたが書き込みが起こらないことをどのように知っているかを尋ねるなら、私はシェルを使用します。 – pferrel