将数据库替换为 postgreSQL 后,Sequelize 时间比较失败

Posted

技术标签:

【中文标题】将数据库替换为 postgreSQL 后,Sequelize 时间比较失败【英文标题】:Sequelize time comparison failed after database replacement to postgreSQL 【发布时间】:2015-03-05 15:30:53 【问题描述】:

我已经替换了 mysql 数据库而不是 PostgreSQL,现在我在尝试通过以下方式查找用户时遇到问题:

.find( where:  resetPasswordToken: req.params.token, resetPasswordExpires:  gt: Date.now()   )
.then(function(user)
  if (!user) 
    req.flash('errors',  msg: 'Password reset token is invalid or has expired.' );
    return res.redirect('/forgot');
  
 res.render('account/reset', 
    title: 'Password Reset'
  );
)
.catch(function(err)
  return next(err);
);

这段代码以前可以工作,现在我有消息:

SequelizeDatabaseError: operator does not exist: timestamp with time zone > bigint

数据库中的日期存储为:2015-03-05 08:09:40.152+01

我将非常感激,因为我不知道我的问题是由数据库迁移还是我的代码中的某些类型引起的。非常感谢!

【问题讨论】:

【参考方案1】:

将 Date.now() 更改为 new Date(),看起来就像在将时间存储为整数之前一样。

 gt: new Date()  

【讨论】:

以上是关于将数据库替换为 postgreSQL 后,Sequelize 时间比较失败的主要内容,如果未能解决你的问题,请参考以下文章

JBoss EAP 为应用项目配置PostgreSQL数据源

在 postgresql 中使用替换更新语句

如何在postgresql中替换URL中的值

PostgreSQL字符串截取替换

postgresql - 替换文本字段中字符串的所有实例

PostgreSQL在转换后将字符误解为数字