node.js - 更新 Sequelize 模型时,失败并返回与我提供的不同的表名?

标签 node.js postgresql sequelize.js

我正在运行 PostgreSQL 11,并尝试使用 Sequelize 更新其中一个表条目。

我的 NodeJS 代码:

require('env2')('.env');
const Sequelize = require('sequelize');

const sequelize=new Sequelize(process.env.database,process.env.username,process.env.password,{
    dialect:'postgres'
});

const Agent=sequelize.define('agent');
updateValues={available:false};
Agent.update(updateValues,{where:{phonenumber:'+18005551212'}}).then(result=>{console.log(result)});

agent 表具有以下结构:

id primary key serial,
phonenumber varchar(100),
available boolean

当我运行 NodeJS 代码时,出现此错误:

Executing (default): UPDATE "agents" SET "updatedAt"='2018-12-27 10:16:54.504 +0
0:00' WHERE "phonenumber" = '+18005551212'
Unhandled rejection SequelizeDatabaseError: relation "agents" does not exist

为什么这次更新失败了?当我在 sequelize.define(agent) 中提供表名作为“agent”时,我不明白为什么错误是在谈论关系“agents”。

当我使用原始 SQL 时更新成功,如下所示:

sequelize.query("update agent set available=false where phonenumber='+18005551212'").then(result=>{
    console.log(result);
});

最佳答案

默认情况下,sequelize 创建一个表,其定义名称为复数,因此当您执行 sequelize.define('agent') 时,它实际上创建了一个名为 agents 。如果你不想自然地改变你的表名,你可以在 sequelize 定义中使用 freezeTableName: true 选项。更多可以在 this 中找到回答。引用 Sequelize 配置 doc .

关于node.js - 更新 Sequelize 模型时,失败并返回与我提供的不同的表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943514/

相关文章:

node.js - Meteor:将文档复制到另一个集合并在 'expirationDate' 之后从原始集合中删除

javascript - Sails Js View 引擎是否支持布局部分?

mysql - 如何在sequelize.js中执行此SQL查询

postgresql - 哪个是关联这些数据库表的更好方法?

node.js - 如何在sequelize模型中插入外键

node.js - 使用服务帐户的 Google 身份验证失败 (node.js)

node.js - npm glob 模式与子目录不匹配

sql - 使用CASE语句测试表1中的值,设置表2中的值

postgresql - 在 Gitlab CI 中部署 helm chart 时如何修复节点主机名太长

mysql - 最新的 Mysql 和 Postgres 会自动准备每个查询吗?