私はデータベースバックエンドとしてCouchDBを使用する(単純な)twitter-cloneを構築しようとしています。 機能が少なくなったため、ほとんどのコーディングが終了しましたが、私はCouchDBで解決できない1つの事柄、つまりユーザーごとのタイムラインがあります。CouchDBで(単純な)twitter-cloneを構築する
twitterと同様に、ユーザーごとのタイムラインには、私がフォローしているすべての人のつぶやきが時間順に表示されるはずです。 SQLでは非常に単純なSelect-Statementですが、CouchDBs Map/Reduceでこれを再現する方法はわかりません。
ここで私はRDBMSで使用するSQL文です:
SELECT * FROM tweets WHERE user_id IN [1,5,20,33,...] ORDER BY created_at DESC;
CouchDBのスキーマの詳細
ユーザー・スキーマは:
{
_id:xxxxxxx,
_rev:yyyyyy,
"type":"user",
"user_id":1,
"username":"john",
...
}
つぶやきスキーマ:
{
"_id":"xxxx",
"_rev":"yyyy",
"type":"tweet",
"text":"Sample Text",
"user_id":1,
...
"created_at":"2011-10-17 10:21:36 +000"
}
view collationsでは、CouchDBに「user_id = 1のすべてのつぶやき」のリストを時間順に照会するのは簡単です。
しかし、「ID 1,2,3のユーザーに属しているすべてのつぶやき」のリストを時間順に検索するにはどうすればよいですか?私のアプリケーションに別のスキーマが必要ですか?
私は申し訳ありませんが、それはだ - 前回が
編集1悪い習慣。 reduce関数では小さくて単純な値に減らしているわけではありません。それは関数の使用を減らす方法ではありません。 –
私はそれが "reduce_overflow_error"を発生させる理由だと思います – Railsmechanic
ここで、reduce関数を削除し、マップ関数を変更しました。 @PartlyCloudy私はそれのような削減を使用すべきではありません、幸せ今? – Shedokan