NodeJs 从 MySQL 查询结果创建新数组
Posted
技术标签:
【中文标题】NodeJs 从 MySQL 查询结果创建新数组【英文标题】:NodeJs create new array from MySQL query result 【发布时间】:2019-08-24 16:00:44 【问题描述】:在我的NodeJs
项目中,我想创建新的array
表单mysql
查询结果。
这是我的结果:
[
"availabilityId": 1,
"dayName": 1,
"fromTime": "05:30:00",
"toTime": "10:00:00"
,
"availabilityId": 2,
"dayName": 1,
"fromTime": "10:30:00",
"toTime": "06:00:00"
,
"availabilityId": 3,
"dayName": 2,
"fromTime": "16:30:00",
"toTime": "22:00:00"
]
在此结果中,两个数据的dayName
相同。
这是我的预期结果
[
"dayName": 1,
"time":[
"availabilityId": 1,
"fromTime": "05:30:00",
"toTime": "10:00:00"
,
"availabilityId": 2,
"fromTime": "10:30:00",
"toTime": "06:00:00"
]
,
"dayName": 2,
"time":[
"availabilityId": 3,
"fromTime": "16:30:00",
"toTime": "22:00:00"
]
]
我的代码:
CubbersAvailability.findAll(
where:
cubbersId:1,
userId:2
,
attributes:['availabilityId', 'dayName', 'fromTime', 'toTime']
).then(availabilityList =>
res.send(availabilityList);
// code for create new array
).catch(error=>
res.status(403).send(status: 'error', resCode:200, msg:'Internal Server Error...!', data:error);
);
【问题讨论】:
【参考方案1】:足够简单,但非常具体。
const source = [
"availabilityId": 1,
"dayName": 1,
"fromTime": "05:30:00",
"toTime": "10:00:00"
,
"availabilityId": 2,
"dayName": 1,
"fromTime": "10:30:00",
"toTime": "06:00:00"
,
"availabilityId": 3,
"dayName": 2,
"fromTime": "16:30:00",
"toTime": "22:00:00"
];
function createNewArray(source)
let output = [];
source.forEach(entry =>
let dayName = entry.dayName;
let time =
"availabilityId": entry.availabilityId,
"fromTime": entry.fromTime,
"toTime": entry.toTime
;
if (output[dayName] === undefined)
output[dayName] =
"dayName": entry.dayName,
"time": []
;
output[dayName].time.push(time);
);
output.shift(); //shouldn't be needed, but since [0] is empty, necessary.
return output;
console.log(createNewArray(source));
【讨论】:
感谢您的代码正常工作,但结果来自链接ibb.co/bHTkw6w 但是如果相同的dayName
表示同一数组中的数据,请查看我的预期结果
兄弟你在吗
更正了结构,但由于某种原因,它在开头添加了一个undefined
,猜测是因为数组中没有0
,只需检查条目是否为undefined
如果是则跳过它。
现在它正在工作,但最重要的是得到undefined
以上是关于NodeJs 从 MySQL 查询结果创建新数组的主要内容,如果未能解决你的问题,请参考以下文章