1

データベース レコードを管理するために、Phonegap アプリケーションでhttp://brian.io/lawnchair/のLawnchair JS を使用しています。私はドキュメント ストアは初めてですが、従来のリレーショナル データベースの経験があります。あるレコードを別のレコードで参照したい場合はどうすればよいですか。例: 食品成分のレコードが複数あり、レシピの JSON にも複数のレコードがあります。成分レコードを参照する方法はありますか?

4

1 に答える 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 に答える