我正在运行 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/