gpt4 book ai didi

node.js - 如何在时间戳上使用 Sequelize 更新 'NOW()'?

转载 作者:IT老高 更新时间:2023-10-28 22:12:54 29 4
gpt4 key购买 nike

我正在尝试执行以下操作:

model.updateAttributes({syncedAt: 'NOW()'});

显然,这不起作用,因为它只是作为字符串传递。我想避免传递 Node 构造的时间戳,因为稍后我会将它与另一个“ON UPDATE CURRENT_TIMESTAMP”字段进行比较,并且数据库和源可能运行不同的时间。

我唯一的选择是只创建一个数据库过程并调用它吗?

最佳答案

您可以使用 Sequelize.fn 对其进行适当的包装:

instance.updateAttributes({syncedAt: sequelize.fn('NOW')});

这是一个完整的工作示例:

'use strict';

var Sequelize = require('sequelize');
var sequelize = new Sequelize(/*database*/'test', /*username*/'test', /*password*/'test',
{host: 'localhost', dialect: 'postgres'});

var model = sequelize.define('model', {
syncedAt: {type: Sequelize.DATE}
});

sequelize.sync({force: true})
.then(function () {
return model.create({});
})
.then(function () {
return model.find({});
})
.then(function(instance){
return instance.updateAttributes({syncedAt: sequelize.fn('NOW')});
})
.then(function () {
process.exit(0);
})
.catch(function(err){
console.log('Caught error! ' + err);
});

产生

UPDATE "models" SET "syncedAt"=NOW(),"updatedAt"='2015-02-09 18:05:28.989 +00:00' WHERE "id"=1

关于node.js - 如何在时间戳上使用 Sequelize 更新 'NOW()'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28414395/

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