如何在后续查询中使用查询参数作为列名

问题描述:

因此,我有一个运行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?

谢谢。

是的,你可以用computed property names做到这一点。它看起来像这样:

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

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

+0

非常感谢,它帮助了很多!我正在使用ES6,现在进行了测试,我得到了我需要的东西。 –

+0

祝你好运! :)请如果你能标记我的答案为接受,谢谢。 – cassini