12

我正在从网页访问者那里收集数据并将其放入我创建的 JavaScript 对象中。但后来我希望能够引用他们输入的数据。

我可以访问 MySQL 数据库,那么有没有办法将这个对象存储在那里?

我想尝试将其保留为对象格式,而不是将其分解为单独的部分。

4

5 回答 5

16

将对象的一个JSON.stringified​​版本存储在数据库中,然后JSON.parse在您再次想要该对象时存储它。它看起来像这样:

var myObj = {some: data, other: stuff};
var myObjString = JSON.stringify(myObj);
// store string in mySQL database here

// load string from database
var myJSONString = //mySQL database call
var myLoadedObj = JSON.parse(myJSONString);
于 2012-05-23T18:40:19.393 回答
10

不,你不能,至少不能。

您可能可以将其序列化为字符串。如果它完全由数组、简单对象和JSON 格式支持的其他数据类型组成(如果它是用户提供的数据,它可能会这样做(主要的例外是上传二进制文件),那么你可以使用JSON 序列化器这样做。现代浏览器为此提供了JSON 对象,而json2.js将为旧浏览器提供 polyfill。然后,您可以将字符串存储在数据库中。

但是,不将其分解为单独的部分确实会抛弃使用关系数据库的许多优点(即关系和执行有用搜索的能力)。

于 2012-05-23T18:40:04.973 回答
2

只需将其作为 JSON 对象存储在使用 varchar 或 text 数据类型的字段中即可。

于 2012-05-23T18:39:47.813 回答
0

看看JSON。 您可以使用jQuery之类的东西来序列化表单数据并将其发送到服务器。您也可以只使用普通的旧表单,并在服务器端处理输入。

于 2012-05-23T18:39:40.387 回答
0

是的,实际上它可以做到。

con.connect(function(err){
var sql = "INSERT INTO books SET ?";  //books -- <tablename>
if(err) console.dir("Error: "+err.message);
var values = {
    "bname": "Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future",
    "author": "Elon Musk",
    "genre": "Technology",
    "bookcount": "5"
};
con.query(sql, [values], function(err, result){
   if (err) throw err;
   else console.dir("Successfully inserted the row in table.");
      console.log(result);
});
}); 

但是,除此之外,您还必须满足这些要点,

  • value应该是对象,即 value={ "name":"property" }
  • 它不应该是一个数组,即 values = [ {}, {} ]
  • 小鬼。- 它不应该有主 id 列。

希望能帮助到你。

于 2020-03-04T09:24:58.950 回答