存储使用json输入的动态表单和数据

时间:2013-02-18 15:42:37

标签: jquery json forms dynamic

我刚才使用JSON ..我知道这可能已经在这里被问过,但是,我只是想咨询一下,如果我做的是正确的事。

我需要为不同的页面创建动态表单。我需要能够为每个页面添加动态表单。在管理面板中,我可以在页面模板中添加/编辑/删除字段 - 更改字段,名称,类型,值等的顺序。

所以,我做了什么,我将动态表单字段存储在json中,对于在每个页面中输入的数据,我也将它存储在json中。以下是存储在我的数据库中的示例JSON数据:

包含2个字段的动态表单的JSON结构:

{
"0":{
  "id":"511ddf15cb8ae_1", // generated using uniqid() and counter, to generate a unique id for each field
  "name":"Page Name #1",
  "type":"textfield",
  "validation":"email", 
  "require":"on",
  "value":""  //default value
},
"1":{
  "id":"511ddf15cb8ae_2",
  "name":"Field Name #2",
  "type":"checkbox",
  "validation":"none",
  "require":"on",
  "value":["item 1","item 2","item 3"]  //selection
}
}

存储了输入值的JSON:

{
"511ddf15cb8ae_1":   //the field id, used as key to be able to directly access the data
  "test new data",
"511ddf15cb8ae_2":
  ["item 1","item 2"]
}

我的主要问题是,如果我在数据库中使用json存储输入的值是否可以,或者我应该单独存储输入的值 - db table row。

有任何想法以更好的方式做到这一点,或者这已经很好了吗?感谢。

干杯

2 个答案:

答案 0 :(得分:0)

取决于您下一步的计划:)。

你采取的方法非常好,如果你只是计划稍后重建表单并填入输入的值(我相信你也存储了动态表单),在这个意义上你不需要使用复杂查询从输入的值重新构造json。

但是,如果您稍后对在相应字段上输入的值进行一些复杂的调查/查询,例如“特定用户在特定字段中输入特定值的次数?”,那将会很繁琐。的种类。如果您打算这样做,那么我建议采用关系方法并将它们存储在表格中;动态表格和输入的值。

答案 1 :(得分:0)

将它作为字符串存储在SQL数据库中是可以的,因为您始终可以stringifyparse但我发现这非常繁琐,尤其是当我想要进行JOIN操作或具有复杂结构时坚持代表。既然你已经在JSON中使用它,为什么不使用像MongoDB这样的NoSQL持久存储机制并存储JSON本身。

MongoDB allows you to save JSON documents in BSON format,然后对它们进行查询,这是您当前实现所缺少的内容。

事实上,您可以在他们的网站上打开交互式MongoDB shell,并使用以下内容对数据库进行原型设计:

> var page = {"name":"Page Name #1",   "type":"textfield",   "validation":"email",    "require":"on",   "value":"aValue"};
{
 "name" : "Page Name #1",
 "type" : "textfield",
 "validation" : "email",
 "require" : "on",
 "value" : "aValue"
 }
> db.pages.save(page);
"ok"

从那里开始,一旦添加了所有页面,您现在可以拥有健壮的查询,例如,这将找到textfield类型的所有页面:

db.pages.find({"type":"textfield"});

您还可以使用值字段执行更复杂,更强大的查询,但我会留给您。

相关问题