node.js + cradleとcouchdbを使用してメッセージングシステムに取り組んでいます。CouchDB、Node.js、Cradle - 返されたデータに基づいてデータを取得する方法
ユーザーが自分のメッセージのリストをプルすると、そのメッセージを送信したユーザーのオンラインステータスを取得する必要があります。オンライン状態は、登録ユーザごとにユーザ文書に格納され、メッセージ情報は別の文書に保存されます。ここで
は私が必要なものを行うために管理することができる唯一の方法であるが、その非常に非効率的
privatemessages /メッセージ受信者のすべてのキー=ユーザ名
db.view('privatemessages/all', {"key":username}, function (err, res) {
res.forEach(function (rowA) {
db.view('users/all', {"key":rowA.username}, function (err, res) {
res.forEach(function (row) {
result.push({onlinestatus:row.onlinestatus, messagedata: rowA});
});
});
});
response.end(JSON.stringify(result));
});
誰かが私言うことができますこれを行う正しい方法ですか?
あなたは
応答のおかげで、これは私のために多くをクリアしました。とにかく、それぞれのユニークユーザーのデータを取得するのではなく、元の呼び出しでユーザーデータを含むドキュメントをcouchdbに生成させる方法はありますか? – Brian
あなたのメッセージビューにユーザーデータの一部を含めることができます(おそらくreduceまたは[照合照合](http://wiki.apache.org/couchdb/View_collation))のどちらかを使用することもできますが、私はそうではありません元のユーザー文書が変更された場合にそれらのデータが更新されるかどうか確認してください。私はおそらく各ユニークユーザーのためのスタンドアロンのクエリにとどまるでしょう。速度が必要な場合は、CouchDBとRedisを組み合わせることができます。これは、速度と信頼性の高いデータ永続性の非常に優れた組み合わせです。 – yojimbo87
もう一度おねがいしますが、私はあなたの方法がうまくいくと思っています。私はもう1つの問題がありますが、データを取得する前に上記のコードがコールバックを完了するように思われますが、これは正しいですか? – Brian