【发布时间】:2017-09-14 00:27:11
【问题描述】:
城市里有人。一个城市由一个名为“城市”的 mongodb 集合表示。 城里的人要么独自一人,要么与同城的另一个人一起散步。
架构是:
{
name: String,
people: [
{
name: String,
status?: String,
walkingWith?: String
}
]
}
如果我的策略正确,我想使用字段“status”和“walkingWith”。
这里有一些条目:
var newyorkPeople = [];
newyorkPeople[0] = {"name": "Jack", "status": "alone", "walkingWith": "none"};
newyorkPeople[1] = {"name": "James", "status": "meeting", "walkingWith": "Maria"};
newyorkPeople[2] = {"name": "Robert", "status": "meeting", "walkingWith": "Nina"};
newyorkPeople[3] = {"name": "Steven", "status": "alone", "walkingWith": "none"};
newyorkPeople[4] = {"name": "Maria", "status": "meeting", "walkingWith": "James"};
newyorkPeople[5] = {"name": "Nina", "status": "meeting", "walkingWith": "Robert"};
然后我进入一个有人的新城市:
db.cities.insert({"name": "New York", "people": newyorkPeople});
现在,我们的目标是让客户(前端)更容易描述这个城市的人。并将它们分组。 首先显示所有孤独的人。然后是走在一起的“情侣”。
我不确定分组是在后端还是前端(角度)更好。
在后端 (api) 我使用 express.js。该 api 可以将所有城市文档返回到前端。然后前端将负责对人员进行排序/分组。
在这种情况下,我考虑的策略是:
遍历人,只打印孤独的人。与人同行者,应另行。 所以第一步,展示所有孤独的人,就完成了。
现在,我仍然需要展示情侣。首先我需要展示“詹姆斯和玛丽亚”这对夫妇,然后是“罗伯特和尼娜”这对夫妇。 我应该为每对夫妇创建一个数组吗?在上面的示例中,它应该创建 2 个数组。
但是,我不确定这是最好的策略。如果有人可以提出一些好的建议,我可以修改 db-schema 甚至让后端交付分组的人。
【问题讨论】:
标签: node.js mongodb express database-design restful-architecture