Javascript 如果一个实体具有数组数据,如何在两个实体中建立关系
我在MYSQL数据库中有两个表nameJavascript 如果一个实体具有数组数据,如何在两个实体中建立关系,javascript,sql,database,sequelize.js,Javascript,Sql,Database,Sequelize.js,我在MYSQL数据库中有两个表nameusers和requests,下面是每个sequelize模型的json示例,我需要映射到我的模型: 用户: 和请求 { "id": 5, "requestUUID": "ab966593-95e5-4fd8-b433-01b116e3edee", "socialLinks": [ { "url": "https://synavos.com", "socialLinks": [ {
users
和requests
,下面是每个sequelize模型的json示例,我需要映射到我的模型:
用户:
和请求
{
"id": 5,
"requestUUID": "ab966593-95e5-4fd8-b433-01b116e3edee",
"socialLinks": [
{
"url": "https://synavos.com",
"socialLinks": [
{
"platform": "facebook",
"handle": "https://www.facebook.com/synavos/"
},
{
"platform": "instagram",
"handle": "https://www.instagram.com/synavosbusiness/"
},
{
"platform": "youtube",
"handle": "https://www.youtube.com/channel/UCrZxxAV_OiRb9N3wIe3N94w"
}
]
},
{
"url": "https://www.confiz.com/",
"socialLinks": [
{
"platform": "facebook",
"handle": "http://www.facebook.com/ConfizCareers"
},
{
"platform": "youtube",
"handle": "https://www.youtube.com/channel/UCG64lwoDIbwtkZK8E_s140A"
}
]
}
]
}
当一个请求属于一个用户时,一个用户可以有多个请求。如果关系是一对一(当一个请求属于一个用户时,用户可以有多个请求),则可以添加到
请求
用户id字段。然后,您可以通过以下方式搜索用户的所有请求:SELECT*FROM requests where user\u id=?
,[user.id]
,如果要查找特定请求的用户,请使用SELECT all FROM users where id=?
,[request.user\u id]
如何处理请求表中的socialLinks
数组?任何数组都意味着您还需要一个表。您应该为socials
增加一个表,其中包含id
、url
、request\u id
。还有一个表,用于链接链接,其中包含id
、social\u id
、platform
,handle
然后SELECT*FROM users LEFT JOIN requests on users.id=requests.user\u id LEFT JOIN socials on request.id=social.request\u id LEFT JOIN links on social.id=links.social\u id
如果您希望它出现在对象结构中,您应该遍历用户并获取每个请求。迭代每个社交的请求和获取,以及每个社交的链接
{
"id": 5,
"requestUUID": "ab966593-95e5-4fd8-b433-01b116e3edee",
"socialLinks": [
{
"url": "https://synavos.com",
"socialLinks": [
{
"platform": "facebook",
"handle": "https://www.facebook.com/synavos/"
},
{
"platform": "instagram",
"handle": "https://www.instagram.com/synavosbusiness/"
},
{
"platform": "youtube",
"handle": "https://www.youtube.com/channel/UCrZxxAV_OiRb9N3wIe3N94w"
}
]
},
{
"url": "https://www.confiz.com/",
"socialLinks": [
{
"platform": "facebook",
"handle": "http://www.facebook.com/ConfizCareers"
},
{
"platform": "youtube",
"handle": "https://www.youtube.com/channel/UCG64lwoDIbwtkZK8E_s140A"
}
]
}
]
}