Node.js(Express.js+Sequelize.js ORM):为什么查询不能使用带引号的表名



。Базаданын-postgresql,ORM-Sequelize。Э。

我有一个基于express.js的应用程序,postgresql和sequelize.js作为ORM。这里是POST查询处理程序,我需要通过"用户名"字段从数据库中获取用户:

// /routes/login.js
router.post('/', function(req, res, next) {
  models.User.findAll({ 
    where: { 
      username:req.body.username 
    } 
  }).then(function(user) {
    console.log(user);
  });
  res.render('login');
});

日志:

Executing (default): SELECT "id", "username", "password" FROM "Users" AS "User" WHERE "User"."username" = 'admin';
[]

如果我从命令行在psql中尝试这个查询,但用户周围没有引号

SELECT "id", "username", "password" FROM Users AS "User" WHERE "User"."username" = 'admin';

它工作正常,返回1行。

从应用程序到数据库的连接正常。

Sequelize生成的查询有什么问题?我可以关闭报价吗?还是应该对我的数据库进行一些额外的设置?

ORM生成的查询是可以的,表名的确切定义需要引号,比如说名称是"Users",而不是"Users"。在我的案例中,我同时创建了"users"one_answers"users"表。没有引号的查询有效,因为它使用了"users"表,在该表中添加了一个用户。"Users"表为空。

最新更新