多表连接查询数据嵌套过深有没有遇到? 以前是连四张表成功时返回的数据。 大致一张发布表,一张评价表(谁回复谁),一张用户表,一张主题表。 有的对象其实不想嵌套的。比如 通过uid查找谁发布的,user对象里边的内容能否直接解放出去?
同理topicId查找到的主题 在comment评价中还有好几个一样的嵌套。救救 有没有什么方法合并,解决嵌套对象。???
{
"infoId": 1,
"uid": 1,
"topicId": 1,
"content": "1",
"like_count": 21,
"post_count": 1,
"updatedAt": "2018-06-06T07:10:33.000Z",
"user": {
"uid": 1,
"username": "陈二",
"avatar": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIHmiadgySExiakKxsHobq70sxZDyic1BORkNqJ5nezISMeZoh1om6ysG53dbAoYjK0FetXV83O8icUiaw/132"
},
"topic": {
"topicId": 1,
"title": "孤独",
"des": "你有朋友吗,有那种可以深夜想聊天,一个电话就能找到的朋友。没有吧"
},
"comments": [
{
"id": 2,
"infoId": 1,
"from_uid": 1,
"to_uid": 1,
"topic_id": 1,
"content": "nidayede",
"from": {
"uid": 1,
"username": "陈韦4"
},
"to": {
"uid": 1,
"username": "六六"
}
},
{
"id": 3,
"infoId": 1,
"from_uid": 1,
"to_uid": 1,
"topic_id": 1,
"content": "nidayede",
"from": {
"uid": 1,
"username": "琪琪"
},
"to": {
"uid": 1,
"username": "让她"
}
},
{
"id": 1,
"infoId": 1,
"from_uid": 1,
"to_uid": 2,
"topic_id": 1,
"content": "1",
"from": {
"uid": 1,
"username": "哈哈"
},
"to": {
"uid": 2,
"username": "陈"
}
}
],
"thumbsUps": [
{
"id": 1,
"infoId": 1,
"uid": 1,
"user": {
"uid": 1,
"avatar": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIHmiadgySExiakKxsHobq70sxZDyic1BORkNqJ5nezISMeZoh1om6ysG53dbAoYjK0FetXV83O8icUiaw/132"
}
},
{
"id": 2,
"infoId": 1,
"uid": 1,
"user": {
"uid": 1,
"avatar": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIHmiadgySExiakKxsHobq70sxZDyic1BORkNqJ5nezISMeZoh1om6ysG53dbAoYjK0FetXV83O8icUiaw/132"
}
}
]
}
@OXOYO 邀请你看看
@chyingp 邀请解答试试书籍大神
let data=[{ user:1 }] let user={ 1:{} } 获取 user的数据 let uid=data[0].user console.log( user[uid])
这种?
来自酷炫的 CNodeMD
@zswnew 肯定不能这么写呀,这里由发布表,连表查了主题表,谁发布的用户表,评价表,评价表又连接了用户表,谁评价的。查出来都是对象
没毛病,结构是清晰的,只是层级的问题。 想直接查出来就是一层的貌似sequelize不支持,你可以翻翻issues 或者自己手动处理下查询结果。
@OXOYO sequelize支持原始查询,用原始查询写,问题迎刃而解
高级查询建议用 sql 语句,sequelize 这类的 orm 框架并不能完全取代手写 sql
sequelize
有一个属性是attributes
比如:
city.findOne({
attributes: {
include: [
[sequelize.literal('province.name'), 'province'],
],
},
where: { id: id },
include: [{
model: province
},
})
这样可以吧要的东西留着 , 不要的使用exclude或者attributes排除就行了
@papandadj 搜索解决方案找到了这个答案,感谢