【问题标题】:sequalize.js - How to remove double quotes from sequelize generated querysequelize.js - 如何从 sequelize 生成的查询中删除双引号
【发布时间】:2020-05-17 01:26:56
【问题描述】:

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

SELECT "first", "last", "email", "phone", "example.string" AS "accessToken" FROM "utenti" AS "utenti" WHERE "utenti"."email" = 'xxxx' AND "utenti"."password" = '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'}))  

}

感谢您的帮助

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    你可以改变这个:

    accessToken='example.string'
    

    收件人:

    accessToken='$example.string$'
    

    【讨论】:

    • 不工作。返回此查询 SELECT first, last, email, phone, "$example.string$" AS accessToken FROM users AS utenti WHERE "utenti"."email" = 'xxxx' AND "utenti"."password" = 'xxxx'
    【解决方案2】:

    你有没有试过使用sequelize.literal,这样你的字符串就不会被转义了……如下图:

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

    【讨论】:

    • 不工作。嗨,Ghassan,我们肯定向前迈出了一步,因为双引号不再存在,但现在甚至没有单引号,并且 Postgres 查询再次失败。我需要左右两边的单引号。的字符串。这是正确的方式-------> 'example.string' AS "accessToken"
    • 你可以试试这个sequelize.literal(`'${accessToken}'`),我在本地试过了,它返回accessToken的值带单引号
    【解决方案3】:

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

    [sequelize.literal("'" + accessToken + "'"), 'accessToken']

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 2022-01-16
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多