Bla*_*her 17 datetime node.js sql-update sequelize.js
我正在尝试做类似以下的事情:
model.updateAttributes({syncedAt: 'NOW()'});
Run Code Online (Sandbox Code Playgroud)
显然,这不起作用,因为它只是作为字符串传递.我想避免传递节点构造的时间戳,因为稍后我将它与另一个'ON UPDATE CURRENT_TIMESTAMP'字段进行比较,数据库和源可能运行不同的时间.
我唯一的选择就是制作数据库程序并调用它吗?
srl*_*rlm 25
您可以使用Sequelize.fn它来适当地包装它:
instance.updateAttributes({syncedAt: sequelize.fn('NOW')});
Run Code Online (Sandbox Code Playgroud)
这是一个完整的工作示例:
'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);
});
Run Code Online (Sandbox Code Playgroud)
这产生了
UPDATE "models" SET "syncedAt"=NOW(),"updatedAt"='2015-02-09 18:05:28.989 +00:00' WHERE "id"=1
Run Code Online (Sandbox Code Playgroud)
小智 21
值得一提(对于那些通过搜索来到这里的人),NOW()不是标准的,并且不适用于SQL服务器 - 所以如果你关心可移植性,不要这样做.
sequelize.literal('CURRENT_TIMESTAMP')
Run Code Online (Sandbox Code Playgroud)
可能会更好
| 归档时间: |
|
| 查看次数: |
25574 次 |
| 最近记录: |