nodejs + mysql 一些非必填的字段后端是怎么处理的?

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,没有则执行另外一段。我感觉这样写特别麻烦,有好的解决方法么?

阅读 2.2k
1 个回答

我当时用的 ORM 模式开发的,所以 where 条件,对象动态添加属性即可。

你这个,我觉得其实已经比较直观了,如果你改成动态添加字符串,那反而有点阅读障碍了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题