我正在建立一个带有用户数据库的站点。我正在使用arbor.js为每个用户构建一个图表。该图是一个带有边缘和节点的树状结构,看起来像这样(我准备好了一张图像,但显然还没有足够的声誉):
vehicle
/ \
/ \
car truck
/
/
sedan
并由以下 JSON 表示:
{
"nodes":{
"vehicle":{
"color":"black",
"label":"vehicle"
},
"car":{
"color":"orange",
"label":"car"
},
"truck":{
"color":"red",
"label":"truck"
},
"sedan":{
"color":"red",
"label":"sedan"
}
},
"edges":{
"vehicle":{
"car":{
"weight":5,
"directed":true,
"color":"orange"
},
"truck":{
"weight":5,
"directed":true,
"color":"red"
}
},
"car":{
"sedan":{
"weight":2,
"directed":true,
"color":"orange"
}
}
}
}
每个图都将始终具有一个带有动态节点和边的对象nodes
。edges
它们各自的属性(color
、label
等weight
)将被修复。
我试图弄清楚如何最好地为每个用户建模这些数据。我将 Rails 与 MongoDB(Mongoid)一起使用,因为我知道 MongoDB 可以将对象作为文档保存在数据库中。我很确定每个用户都会有一个我可以定义的图形模型,但除此之外,我不确定如何处理节点和边。
我猜该解决方案将涉及has_many
,embeds_many
或可能serialize
,但我不清楚如何将这些与固定数据和动态数据混合使用。
此外,最好按照上面的方式检索数据,这样我可以在从磁盘加载图表时轻松创建图表。
任何帮助,将不胜感激!