我在我的Phonegap应用程序中使用来自http://brian.io/lawnchair/的Lawnchair JS来管理我的数据库记录。我是文档商店的新手,但对传统的关系数据库很有经验。如果我想在另一条记录上引用一条记录,我该怎么办?例如:我有食物成分的多个记录,我有多个食谱记录,在食谱JSON中,有没有办法参考成分记录?
答案 0 :(得分: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}
您可以将所有食谱的列表存储在一个文档中:
{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 ..)。