Javascript 输出括号前面有nr id的嵌套数组
我是这方面的新手,我想问的是,如何从MySQL表中执行这个嵌套数组的示例以输出,就像这个javascript中用于node js express API的聊天示例一样,我使用的是vue cli 请参阅Javascript 输出括号前面有nr id的嵌套数组,javascript,mysql,node.js,arrays,nested,Javascript,Mysql,Node.js,Arrays,Nested,我是这方面的新手,我想问的是,如何从MySQL表中执行这个嵌套数组的示例以输出,就像这个javascript中用于node js express API的聊天示例一样,我使用的是vue cli 请参阅chatsMysql表: 这就是我想要实现的目标: chats: { SENDER ID -> 1: { isPinned: true, msg: [ { // this is me (sender)
chats
Mysql表:
这就是我想要实现的目标:
chats: {
SENDER ID -> 1: {
isPinned: true,
msg: [
{ // this is me (sender)
textContent: 'How can we help? We\'re here for you!',
time: 'Mon Dec 10 2018 07:45:00 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{ // this is the receiver
textContent: 'Hey John, I am looking for the best admin template. Could you please help me to find it out?',
time: 'Mon Dec 10 2018 07:45:23 GMT+0000 (GMT)',
isSent: false,
isSeen: true
}
]
},
2: {
isPinned: false,
msg: [
{
textContent: 'Hi',
time: 'Mon Dec 10 2018 07:45:00 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{
textContent: 'Hello. How can I help You?',
time: 'Mon Dec 11 2018 07:45:15 GMT+0000 (GMT)',
isSent: false,
isSeen: true
}
]
}
}
这就是我到目前为止所做的:
Mysql查询:
getChats: callBack => {
pool.query(
'SELECT * FROM chat WHERE reciever_userid=1 AND sender_userid=5 OR sender_userid=1 AND reciever_userid=5 ORDER BY time',
[],
(error, chats) => {
if (error) {
callBack(error)
}
return callBack(null, chats)
}
)
}
Api调用:
getChats((err, chatz) => {
if (err) {
console.log(err)
return
}
const chats = chatz.map(el => {
el.msg = {
textContent : el.textContent || null,
time : el.time || null,
isSent : el.isSent || null,
isSeen : el.isSeen || null
}
delete el['status']
delete el['sender_userid']
delete el['reciever_userid']
delete el['textContent']
delete el['time']
delete el['isSent']
delete el['isSeen']
delete el['id']
return el
}).flat()
return res.json({
chats
})
})
《邮递员》中的结果并不是我在上面的例子中所期望的
{
"chats": [
{
"isPinned": "true",
"msg": {
"textContent": "heyyy",
"time": "2020-10-07T15:04:40.000Z",
"isSent": "true",
"isSeen": "true"
}
},
{
"isPinned": "true",
"msg": {
"textContent": "yesss",
"time": "2020-10-07T15:04:40.000Z",
"isSent": "true",
"isSeen": "true"
}
}
]
}
要匹配目标格式,请将“Api调用”代码更改为:
getChats((err, chatz) => {
if (err) {
console.log(err)
return
}
const chatsArray = chatz.map(el => {
el.msg = {
textContent : el.textContent || null,
time : el.time || null,
isSent : el.isSent || null,
isSeen : el.isSeen || null
}
delete el['status']
delete el['sender_userid']
delete el['reciever_userid']
delete el['textContent']
delete el['time']
delete el['isSent']
delete el['isSeen']
delete el['id']
return el
}).flat()
let chats = {};
chatsArray.forEach((chat, i) => chats[i + 1] = chat)
return res.json({
chats
})
})
所以问题是,您将聊天作为数组而不是带有索引的对象获取?或者msg是一个对象而不是数组?或者两者都有?我不知道;I don’我不知道热输出,如示例1所示:{在frontOk,检查我的回答谢谢你的时间!现在我得到了正确的结果。还有一件事,我从你的代码结果中看到,所有文本内容都是独立的,id 1和id 2或2到1的所有文本内容应该作为一个整体放在一起,就像achive示例中一样,可以实现吗?