データベース レコードを管理するために、Phonegap アプリケーションでhttp://brian.io/lawnchair/のLawnchair JS を使用しています。私はドキュメント ストアは初めてですが、従来のリレーショナル データベースの経験があります。あるレコードを別のレコードで参照したい場合はどうすればよいですか。例: 食品成分のレコードが複数あり、レシピの JSON にも複数のレコードがあります。成分レコードを参照する方法はありますか?
質問する
594 次
1 に答える
3
lawnchair のような json ドキュメント ストアで目的を達成するには、参照されるドキュメントのキー名をドキュメント内に保存するだけです。
たとえば、次の食品成分のドキュメントがあります。
{key:'fi_1', name: 'rice', id: 1}
{key:'fi_2', name: 'corn', id: 2}
およびそれらのレシピ ドキュメント:
{key:'r_332', ingredients: ['fi_1', 'fi_54'], name: 'risotto', id: 332}
{key:'r_333', ingredient: ['fi_12'], name:'cookie', id: 333}
すべてのレシピのリストを 1 つのドキュメントに保存できます。
{key:'cookbook', recipes: ['r_1', 'r_2', .... 'r_332', 'r_333', .... ] }
その後、クックブック ドキュメントを取得できます。
store.get('cookbook', function(data) {
var recipes = data.recipes;
// do something with the list of all recipes
});
材料を取得するためのレシピを探します。
store.get('r_332', function(data) {
var ingredients = data.ingredients;
for (ingredient_key in ingredients) {
store.get(ingredient_key, function(ingredient_data) {
var name = ingredient_data.name;
var id = ingredient_data.id;
// do something with each ingredient
alert('ingredient: ' + name + ' - id: ' + id);
}
}
});
上記のリストでは、参照されるドキュメントの完全なキー名を保存する代わりに、ID を保存することができます。これは、それらのタイプと、そこからキー名を再作成する方法を知っているはずだからです (食品成分: 'fi_' 接頭辞に続くid、レシピ: 'r_' の後に id..)。
于 2012-06-10T19:13:06.150 に答える