nodejs问题,欢迎大家来讨论,平均给分

bai51779 2017-04-08 08:56:14
刚刚实现了个内部需求,不考虑任何干扰因素(夜间低峰内部自助采集内容),因为赶时间加上业务比较简单,所有采用js(生产业务系统为mysql),但在不考虑在数据库实现的情况下node实现部分功能比较曲折~~额,不知道该用什么词形容。因对nodejs纯粹是自学,很多api了解的并不是很系统,故跑来问问大家有没有更好的实现方式(业务已实现,纯好奇和学习,前提条件就是js+mysql。。。。不要问为什么),平均给分希望大家多多讨论


数据库四张表
学校 (不在采集范围,所以不列)
教室 |编号NUMBER|学校SCHOOL_ID|
教师 |编号NUMBER|学校SCHOOL_ID|
学生 |编号NUMBER|学校SCHOOL_ID|班级CLASS_ID|
现在需要将全库按学校按房间编号按集体/人编号的分组为array,结果如下,其中教师假设为id=0的班级下的学生
[{
schoolId: 2,
rooms: [
"R001&15*7",
"R002&5*6",
"R003&5*6"
],
classes: [
{
classId: 2,
numbers: [
"S20160910452"
]
},
{
classId: 0,
numbers: [
"T201"
]
}
]
}]


实现代码具体如下


let schoolInfo = {};
let classInfo = {};
async.series([function (cb) {
db.room.find({}, function (e, r) {
_.each(r, function (room) {
if (room.schoolId && room.number) {
if (!schoolInfo[room.schoolId]) {
schoolInfo[room.schoolId] = {
id: room.schoolId,
rooms: [],
classes: []
};
}
schoolInfo[room.schoolId].rooms.push(room.number);
}
});
cb(e, r);
});
}, function (cb) {
db.student.find({}, function (e, r) {
_.each(r, function (student) {
if (student.schoolId && student.classId && student.number) {
if (!classInfo[student.schoolId]) {
classInfo[student.schoolId] = {}
}
if (!classInfo[student.schoolId][student.classId]) {
classInfo[student.schoolId][student.classId] = {
classId: student.classId,
numbers: []
}
if (!schoolInfo[student.schoolId]) {
schoolInfo[student.schoolId] = {
schoolId: student.schoolId,
rooms: [],
classes: []
};
}
schoolInfo[student.schoolId].classes.push(classInfo[student.schoolId][student.classId]);
}
classInfo[student.schoolId][student.classId].numbers.push(student.number);
}
});
cb(e);
});
}, function (cb) {
db.teacher.find({}, function (e, r) {
_.each(r, function (teacher) {
if (teacher.schoolId && teacher.number) {
if (!classInfo[teacher.schoolId]) {
classInfo[teacher.schoolId] = {}
}
if (!classInfo[teacher.schoolId][0]) {
classInfo[teacher.schoolId][0] = {classId: 0, numbers: []}
if (!schoolInfo[teacher.schoolId]) {
schoolInfo[teacher.schoolId] = {
schoolId: teacher.schoolId,
rooms: [],
classes: []
};
}
schoolInfo[teacher.schoolId].classes.push(classInfo[teacher.schoolId][0]);
}
classInfo[teacher.schoolId][0].numbers.push(teacher.number);
}
});
cb(e);
});
}], function (e) {
let result = [];
for (var key in schoolInfo) {
let sif = {
schoolId: schoolInfo[key].schoolId,
rooms: schoolInfo[key].rooms,
classes: schoolInfo[key].classes
}
result.push(sif);
}
callback(e, result);
})
...全文
729 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Avril_00 2017-06-09
  • 打赏
  • 举报
回复
最近也在学习js,代码写好没有很好的调试工具呀。错误很难找。

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧