【问题标题】:How to link records with lawnchair js如何用草坪椅js链接记录
【发布时间】:2012-06-09 21:05:53
【问题描述】:

我在 Phonegap 应用程序中使用来自 http://brian.io/lawnchair/ 的 Lawnchair JS 来管理我的数据库记录。我是文档存储的新手,但对传统的关系数据库有经验。如果我想在另一条记录上引用一条记录,我应该怎么做。例如:我有多个食品配料记录,我有多个食谱记录,在一个食谱 JSON 中,有没有办法引用一个配料记录?

【问题讨论】:

    标签: javascript database cordova nosql lawnchair


    【解决方案1】:

    要使用像草坪椅这样的 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}
    

    您可以将所有食谱的列表存储在一个文档中:

    {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,recipe : 'r_' 后跟 id..)。

    【讨论】:

    • 非常感谢您的详细回答,这对我很有帮助。现在,让我看看我是否能找到一种安全的方法来创建 id,我想我会采用它始终递增的方法 =)
    • 当然,自动递增是创建简单 ID 号的最自然方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2013-03-18
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多