如何使用可选参数创建sql语句

时间:2019-06-26 03:27:50

标签: mysql sql node.js reactjs

我有一个cd source find . -iname *.jpg | shuf | head -n 2100 | xargs -I{} mv {} ../dest/{} 表,其中包含以下字段:

lessons

用户可以通过界面选择要打开的女巫课程。

他将开始选择语言,然后是类型,最后是级别。

在此过程中,我想使用单个sql语句查询数据库,但是当然,第一个查询将仅具有language字段。我想出了这种语法,但它不起作用:

id  title   type    language    level 

我如何使其工作?

1 个答案:

答案 0 :(得分:2)

为降低检查变量和构建查询的复杂性,您可以向函数传递要匹配的对象,想要的对象以及要返回的列等(因为*不理想)。 / p>

类似这样:

function queryLessonList (where = {}, columns = ['*']) {
  let keys = Object.keys(where)
  let values = Object.values(where)
  columns = !columns.length || columns[0] === '*' ?
    '*': columns.map(e => '`'+e+'`').join(',')

  let sql = `
    SELECT ${columns}
    FROM lessons
    ${keys.length ? 'WHERE \`'+keys.join('` = ? AND `')+'\` = ?' : ''}
  `

  return query(sql, values)
}

/*
   SELECT *
   FROM lessons
   WHERE `language` = ? AND `type` = ?
 */
queryLessonList({
  language: 'en',
  type: 'foo'
}, [])


/*
  SELECT `id`
  FROM lessons
*/
queryLessonList({}, ['id'])


/*
  SELECT *
  FROM lessons
*/
queryLessonList()