gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:11:37 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com