これは私の最初の質問stackoverflowのため、私は正しいプロトコルに従っていることを願っています。共通鍵でCouchDB文書を注文できますか?
私はCouchDBとNodeJSに基づいて基本的なブラウザゲームを作成しています。私のゲームでは、ユーザーは複数の文字を持つことができます。私はデータベース内のキャラクターとプレイヤーを分けることに決めました。なぜなら、ユーザーアカウントデータ(電子メール、実名など)をキャラクターデータに関連付けることはめったにないからです。とにかく、ここに私の問題があります:
私は、プレイヤーによって制御されているすべての文字を返すビューを作成したいと考えています。このドキュメントには「所有者」というプロパティがあります。これを行う最も簡単な方法は、所有者によって分類されたすべての文字のリストを返すビューを作成することです。
ここに私のコードは、これまでのところです:
機能(DOC){ EMIT(doc.owner、DOC); }
私はこのような結果を取得しようとしている(注、これが簡略化され、私は、CouchDBの出力内の他のデータが含まれて知っている):
{
"player1":{
"character1":{
"data":{}
},
"character2":{
"data":{}
}
},
"player2":{
"character1":{
"data":{}
},
"character2":{
"data":{}
}
}
}
は、キーは一意である必要がありますか?私のコードは私に望ましい結果を与えるでしょうか?
私はデータを分けることには結婚していません。代わりに、ユーザー文書の下に文字を置き、ちょうどユーザーアカウントデータを出す文字データと、もう一つは文字データだけを出力し、ユーザデータは省略しますが、それは私には少し厄介なようです。キャラクターデータに特有の他のビューを書く必要があるかもしれないので、データを別にしておきたいのですが、データベース内のプレーヤーからキャラクターを分離すれば、より整理されたように思えます。
関連するメモでは、2番目のパラメータを渡すことで応答をフィルタリングする方法はありますか?私はこれがビューの効率を否定し、おそらくこのインスタンスでは一時的なビューを使用すべきだと考えています。私の問題は、このビュー(実際にはデータベース全体)によって大量のデータが返される可能性があることです。特に、ほとんどのデータが必要ないため、HTTP経由で転送すると非常に遅くなる可能性があります。
解決策のもう1つの可能性は、ユーザーが制御する各文字の_idをプロパティとしてユーザーアカウントデータベースに格納することです。これは私には十分分かりやすいようですが、異なる、またはあえて "より良い"オプションがあるとすれば、それを聞いてみたいと思います。
この問題を解決するにはどうすればよいでしょうか?
ご協力いただきありがとうございます。
あなたの最初の質問と今あなたは10k +です:) ... – TimoSolo