javascript - 如何更新sequelize.query 中的多个列

标签 javascript postgresql sequelize.js

现在,我使用 accountId 更新了我的表 accounts,并且它运行良好。

return models.sequelize.query("UPDATE \"accounts\" " +
                                        "SET \"accountId\" = "+newAccount.id+" " +
                                        "WHERE \"accountId\" = "+oldAccount.id+";").spread(function(){
            return 'success';
        });

如果我不仅想更改 accountId,还想更改日期,该怎么办? 那我该怎么写呢?我试过用逗号来写

"SET\"accountId\"= "+ newAccount.id+",\"date\"+ newAccount.date + "WHERE...

但这似乎不起作用。

感谢您的帮助。

更新:在控制台中我收到此消息 [2015-10-25 16:42:00.909] [TRACE] main - 执行(默认): UPDATE "accounts"SET "date"= Sun Oct 25 2015 16:42:00 GMT+0300 (MSK) WHERE "date"= Sun Oct 25 2015 16:41:53 GMT+0300 (MSK); 但之后我没有收到任何“成功”消息(数据库中的数据没有更改)。会因为数据类型而发生吗?我的 postgresql 数据库中有“带有时区的时间戳”。

我猜,here可能是同样的问题

最佳答案

当您尝试按日期查询时,您将发送一个 JavaScript 日期对象,该对象会转换为本地时间的字符串。然后,PostgreSQL 由于语法无效而拒绝此操作,因为日期没有被引用,而且它无法识别格式。

在使用 Sequelize 时,请尽可能不要使用原始查询,因为 Sequelize 可以为您完成所有必要的序列化和反序列化。您可以通过编写以下内容轻松解决您的一些问题:

var Account = sequelize.define('account', {
  accountId: Sequelize.INTEGER,
  date: Sequelize.DATE
});

Account.update({
  accountId: newAccount.id,
  date: new Date()
}, {
  where: {
    accountId: oldAccount.id
  }
}).then(function() {
  callback('success');
});

如果您确实想使用原始查询来执行此操作,则应该将日期对象转换为 PostgreSQL 可以读取的内容。例如,您可以使用 moment 库来执行此操作:

var moment = require('moment');

models.sequelize.query("UPDATE \"accounts\" " +
 "SET \"accountId\" = " + newAccount.id + ", " +
   "\"date\" = '" + moment().format('YYYY-MM-DD HH:mm:ss') + "' " +
 "WHERE \"accountId\" = " + oldAccount.id + ";").spread(function(){
 return 'success';
});

关于javascript - 如何更新sequelize.query 中的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33329645/

相关文章:

javascript - 在标准模式下设置元素宽度或高度

java - 需要了解 java.sql.SQLException : No suitable driver found for jdbc:postgresql error 原因的建议

mysql - Sequelize 关联出现错误

javascript - React Tic Tac Toe 教程

javascript - 在 HTML 中更新屏幕上的区间变量

javascript - ajax成功函数参数data和response有什么区别?

sql-server - 自动将存储过程从 SQL Server 迁移到 Postgres

sql - 没有行的 Timescaledb time_bucket 获取周期

javascript - sequelize 查询哪里喜欢

sequelize.js - 使用异步模型查询对数据库播种进行 Sequelize