sequalize.js-如何从序列化生成的查询中删除双引号

时间:2020-05-17 01:26:56

标签: node.js postgresql sequelize.js

我正在使用Postgres。 我想使用带有findAll的sequalize.js进行查询,使用计算所得的字段得到了我无法消除的奇怪行为。在实践中,对计算所得字段的值进行sequalize插入双引号,以阻止执行Postgres查询。

选择“第一”,“最后”,“电子邮件”,“电话”,“ example.string”作为“ accessToken” ,从“ utenti”作为“ utenti” 在哪里“ utenti”。“电子邮件” =“ xxxx”和“ utenti”。“密码” =“ xxxx”);

以粗体显示有问题。如果我在计算的字段值上加上单引号,则查询效果很好 在与数据库的连接中,我添加了 quoteidentifiers:false ,但是现在我遇到了点问题。 如果在计算字段的值内有一个点,则再次添加双引号!!!!!!!!!!并查询Postgres不起作用

**这是代码node.js的示例**

const getTableData = (req, res, db) => {  

  const accessToken='example.string'

  db.utenti.findAll({
    where: {
      [db.Sequelize.Op.and]: 
         [
         {"email":”xxxx”}, 
         {"password":”xxxx”},  
        ]
    } ,
   attributes: [ 'first','last','email','phone', [ accessToken  , "accessToken"]]  
   })  
  .then(items => {
    if(items.length){
      res.json(items)
    } else {    
      res.json({dataExists: 'false'})
    }
  })
  .catch(err => res.status(400).json({dbError: 'db error'}))  

}

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

您可以更改此内容:

accessToken='example.string'

收件人:

accessToken='$example.string$'

答案 1 :(得分:0)

您是否尝试过使用sequelize.literal,所以您的字符串不会被转义...如下所示:

   attributes: [ 'first','last','email','phone', [ sequelize.literal(accessToken)  , "accessToken"]]  

答案 2 :(得分:0)

sequalize.js的技巧太多。最后,我解决了。要使用字符串类型的常量(包含一个或多个点)来管理计算字段,正确的语法是这样的:

[sequelize.literal(“'” + accessToken +“'”),'accessToken']