我最近开始学习MySQL,并且一直在尝试将其与Node结合使用以制作REST API,而不是使用通常的Mongo Node堆栈。
但是,我遇到的一个问题是在MySQL中存储数组和对象。在Mongo中,这非常容易,而在MySQL中,似乎并不那么容易。
基本上我想返回具有这样结构的JSON;
{
"name": "My Product",
"desc": "Product description",
"images": [
{
"caption": "Product Photo 1",
"url": "http://"
},
{
"caption": "Product Photo 2",
"url": "http://"
},
{
"caption": "Product Photo 3",
"url": "http://"
},
],
"pricing": {
"standard": {
"title": "The Standard Product",
"desc": "Standard Product Description",
"prices": {
"usd": 10.99,
"eur": 9.99,
"gbp": 8.99
}
},
"deluxe": {
"title": "The Deluxe Product",
"desc": "Deluxe Product Description",
"prices": {
"usd": 19.99,
"eur": 17.99,
"gbp": 15.99
}
}
}
}
但是,我在理解为图像数组之类的属性实现存储的概念时遇到了一些麻烦。
我已经读到,最佳实践是将它们存储在另一个表中,以便您可以查询它们。但是我不确定我是否理解这一点,因为如果我为每个数组/对象添加一个新表,我将在大规模项目中最终得到大量的表吗?
我还阅读了有关将其存储为JSON字符串的信息,但这并不能真正完成我所追求的目标,因此,我更愿意研究上述解决方案。
答案 0 :(得分:1)
您是否正在使用MySQL 8.0?它支持类似于MongoDB的document store产品,也可以通过X DevAPI使用,因此,如果您不需要,则无需使用“低级” JSON
数据类型。达到相同的目的。
由于您似乎正在使用Node.js,因此还有一个X DevAPI客户端实现可用于此目的。
免责声明:我是该X DevAPI实现中的主要开发人员。
答案 1 :(得分:0)
https://scotch.io/tutorials/working-with-json-in-mysql 阅读本文
将数据类型列创建为JSON 您可以转储该数据
{
"name": "My Product",
"desc": "Product description",
"images": [
{
"caption": "Product Photo 1",
"url": "http://"
},
{
"caption": "Product Photo 2",
"url": "http://"
},
{
"caption": "Product Photo 3",
"url": "http://"
},
],
"pricing": {
"standard": {
"title": "The Standard Product",
"desc": "Standard Product Description",
"prices": {
"usd": 10.99,
"eur": 9.99,
"gbp": 8.99
}
},
"deluxe": {
"title": "The Deluxe Product",
"desc": "Deluxe Product Description",
"prices": {
"usd": 19.99,
"eur": 17.99,
"gbp": 15.99
}
}
}
}
以后您可以查询此数据 这里参考mysql doc https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html