Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在sequelize查询中将查询参数用作列名称_Sql_Node.js_Express_Sequelize.js - Fatal编程技术网

Sql 如何在sequelize查询中将查询参数用作列名称

Sql 如何在sequelize查询中将查询参数用作列名称,sql,node.js,express,sequelize.js,Sql,Node.js,Express,Sequelize.js,所以,我有一个运行Sequelize ORM的Express服务器。客户端将使用单选按钮选项回答一些问题,答案作为查询参数传递到URL,这样我就可以向服务器发出GET请求 问题是:我的req.query值应该是数据库表的列名。我想知道是否可以使用Sequelize从数据库获取响应,并将参数作为表的列名传递 async indexAbrigo(req, res) { try { let abrigos = null let type = req.query.type // t

所以,我有一个运行Sequelize ORM的Express服务器。客户端将使用单选按钮选项回答一些问题,答案作为查询参数传递到URL,这样我就可以向服务器发出GET请求

问题是:我的req.query值应该是数据库表的列名。我想知道是否可以使用Sequelize从数据库获取响应,并将参数作为表的列名传递

async indexAbrigo(req, res) {
  try {
    let abrigos = null
    let type = req.query.type  // type = 'periodoTEMPORARIO'
    let reason = req.query.reason // reason = 'motivoRUA'
    abrigos = await Abrigos.findAll({
      attributes: ['idABRIGOS'],
        where: {
//I want type and reason to be the parameters that I got from client
          type: 'S',
          reason: 'S'
        }
      })
  }
  res.send(abrigos)
}
这不起作用,查询结果如下

(SELECT `idABRIGOS` FROM Abrigos WHERE `type` = `S` AND `reason` = `S`)
相反,我需要将该类型和原因转换为它们的值,然后将这些值传递给SQL。可以用Sequelize吗?或者甚至可以使用任何用于Node/Express的ORM

谢谢。

是的,你可以用它。它看起来是这样的:

where: {
  [type]: 'S',
  [reason]: 'S'
}

您的node.js版本必须与ES6兼容。

谢谢-我正在从req.body传递参数,这对我来说非常有效,因此我将发布它,以防它可能会节省某人的时间

app.post('/doFind', (req, res) => {
    Abrigos.findAll(
      {[req.body.field]: req.body.newVal},
      {returning: true, where: {id: req.body.id}}
    )
    .then( () => {
      res.status(200).end()
    })
    .catch(err => {
      console.log("Err: " + err)
      res.status(404).send('Error attempting to update database').end()
    })
})

非常感谢,它帮了很多忙!我正在使用ES6,现在测试了它,我得到了我需要的。