SQL语句:
const sql = {
// 学生
student:{
list:'SELECT a.*, b.class_name FROM students a,class b WHERE a.class_id = b.class_id', //无条件
list_classId:'SELECT a.*, b.class_name FROM students a,class b WHERE a.class_id = b.class_id AND a.class_id = ?', //根据班级查
}
};
module.exports = {
sql
};
nodejs:
router.get('/list', (req, res) => {
let params = req.query || req.params;
let classId = params.classId;
let sql = classId?$db.sql.student.list_classId:$db.sql.student.list; //问题出现在这一行
$db.query(sql, [classId]).then(data=>{
res.send({
code:200,
msg:"操作成功",
data:data
});
res.end();
})
})
这里有个比较尴尬的地方,classId是非必填的,所以这里我准备了两段sql,如果有classId就执行这段sql,没有则执行另外一段。我感觉这样写特别麻烦,有好的解决方法么?
我当时用的 ORM 模式开发的,所以 where 条件,对象动态添加属性即可。
你这个,我觉得其实已经比较直观了,如果你改成动态添加字符串,那反而有点阅读障碍了。