Sql 如何在sequelize查询中将查询参数用作列名称
所以,我有一个运行Sequelize ORM的Express服务器。客户端将使用单选按钮选项回答一些问题,答案作为查询参数传递到URL,这样我就可以向服务器发出GET请求 问题是:我的req.query值应该是数据库表的列名。我想知道是否可以使用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
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,现在测试了它,我得到了我需要的。