如何在 Sequelize 中使用 SQLite 数据库连接列

问题描述 投票:0回答:3

我正在将 Sequelize 用于我正在进行的一个 Express 项目。
在一个查询中,我想检索两列的串联结果。

喜欢:

SELECT first_name || ' ' || last_name AS full_name FROM table

我尝试了以下语法并收到错误

router.get('/persons', function(req, res, next) {
  models.Person.findAll({
    attributes: [models.sequelize.fn('CONCAT', 'first_name', 'last_name')]
  })
    .then(function(persons) {
      res.send(persons);
    });
});

错误信息:

SELECT CONCAT('first_name', 'last_name') FROM `Persons` AS `Person`;
Possibly unhandled SequelizeDatabaseError: Error: SQLITE_ERROR: no such function: CONCAT
sqlite express sequelize.js
3个回答
14
投票

我使用了

models.sequelize.literal
,它创建了一个代表文字的对象, 在嵌套数组内为其指定别名。

结果:

router.get('/persons', function(req, res, next) {
  models.Person.findAll({
    attributes: [models.sequelize.literal("first_name || ' ' || last_name"), 'full_name']
  })
    .then(function(persons) {
      res.send(persons);
    });
});

0
投票

这对我有用。而不是使用 setter 和 getter 方法


-1
投票

我也遇到了同样的问题,我是这样解决的

const { fn, col } = Person.sequelize;

const res = Person.findAll({
   attributes: [ [fn('concat', col('first_name'), ' ', col('last_name')), "FullName"], ...OthersColumns ]
})

希望对你或其他人有帮助

© www.soinside.com 2019 - 2024. All rights reserved.