在 MYSQL 数据库中存储包含对象的 javascript 数组?

Posted

技术标签:

【中文标题】在 MYSQL 数据库中存储包含对象的 javascript 数组?【英文标题】:Storing a javascript array that contains objects in a MYSQL database? 【发布时间】:2012-05-19 09:00:15 【问题描述】:

所以在 javascript 中我有一个看起来像这样的数组:

[x1:0,x2:2000,y:300,x1:50,x2:250,y:500]

我想将它存储在我的数据库中的单个字段中。我考虑过以某种方式将其设为字符串,然后将其保存为文本,但我真的不知道一种非常有效且“智能”的方式来做到这一点。我也听说过 VARBINARY 字段类型,但我不知道如何将对象/数组写入其中之一以及如何将其读出...

如果它会自动被读取为数组,我最喜欢的是。我的 mysql 插件(或者在 js 中调用的插件)将我的查询作为对象数组返回:

[id:0,bla:"text",id:0,bla:"text"]

对于具有列 id 和 bla 的表中的查询。

假设我的数组存储在 bla 中,我希望我得到的对象在返回时看起来与此完全一样(但是,如果这不可能,我可以使用替代解决方案)。

[id:0,bla:[x1:0,x2:2000,y:300,x1:50,x2:250,y:500],id:0,bla:[ x1:0,x2:2000,y:300,x1:50,x2:250,y:500]]

所以基本上我会得到一个包含两个对象的数组,每个对象都有属性 bla 和 id,其中 bla 是具有属性 x1、x2 和 y 的对象数组。

【问题讨论】:

这取决于你想对数据库中的值做什么。如果您不想查询该字段,您可以将数组转换为 JSON 并将其存储为文本。但是,如果您想对数据进行查询,请在表中创建适当的字段。 为什么不能像存储 JSON 那样只存储数组? 你要找的是JSON ***.com/questions/383692/… 你为什么不看看没有数据库的网络存储。 relationalcloud.com/index.php?title=Database_as_a_Service 【参考方案1】:

以某种方式将其设为字符串,然后将其保存为文本,但我真的不知道一种非常有效且“智能”的方法。

将字符串保存为 JSON,如下所示:

var myArr = [x1:0,x2:2000,y:300,x1:50,x2:250,y:500];
myArrString = JSON.stringify(myArr);

稍后,当你从 MySQL 中取回 JSON 字符串时,你可以将其转回带有 JSON.parse() 的数组,如下所示:

var myArr = JSON.parse(myArrString)

是的,如果您想知道,JSON 功能已添加到 Javascript 的标准代码库中:这就是它的流行程度。

【讨论】:

以前从来没有研究过这个 JSON,但它看起来很有趣,所以我想我可以尝试一下...... 这很简单,我已经告诉了你所有你需要知道的。 :) 真的就是这样吗?那么JSON只有JSON.stringify()和JSON.parse()这两个函数吗?又好又简单,正是我喜欢的方式。 是的,就是这样。非常简单,但非常有用。您还可以为不想很好地打包的复杂对象定义自己的打包和解包过程,但是对于像您在这里所做的简单事情,stringifyparse 应该可以很好地工作。

以上是关于在 MYSQL 数据库中存储包含对象的 javascript 数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jpa 在 mysql 中存储 java 对象?

如何将 OOP 中的对象存储在 MySQL 等数据库中

java对象存储管理

java对象的存储结构和指针压缩学习

Java前提下, MySQL数据库,一次性存储大量数据导致内存溢出

java中静态变量在内存中的位置