续集如何查找具有多个 where 子句和时间戳的行 > NOW()

Posted

技术标签:

【中文标题】续集如何查找具有多个 where 子句和时间戳的行 > NOW()【英文标题】:Sequelize how to find rows with multiple where clauses and timestamp > NOW() 【发布时间】:2012-01-13 11:17:34 【问题描述】:

如何使用 Sequelize 做到这一点?

SELECT FROM sessions WHERE user_id = ? AND token = ? AND expires > NOW()

这是我想要做的(假设 Session 是 Sequelize 模型):

Session.find(
    where: 
        user_id: someNumber,
        token: someString,
        //expires > NOW() (how do I do this?)
    
).on('success', function (s)  /* things and stuff */ );

谢谢!

【问题讨论】:

【参考方案1】:

您是否尝试在 sequelize 中使用查找器的数组表示法?

Session.find(
  where: ['user_id=? and token=? and expires > NOW()', someNumber, someString]
).on('success', function (s)  /* things and stuff */ );

您可以查看此页面:http://sequelizejs.com/?active=find-objects#find-objects

希望这可行。否则这是一个错误:D

【讨论】:

啊,我的错……我想我没有意识到使用这种方法可以有多个替代品。谢谢!【参考方案2】:

另一种方法:

Session.find(
  where: 
    user_id: someNumber,
    token: someString,
    expires: 
      $gt: (new Date())
    
  
).on('success', function (s)  /* things and stuff */ );

【讨论】:

【参考方案3】:

请注意,截至本文发布和最新版本的续集,上述答案已过时。我正在发布我正在努力的解决方案,希望能节省一些时间。

filters["State"] = $and: [filters["State"], $not: this.filterSBM()] ;

注意 JSON 对象中的 $ 和数组,缺少 ?令牌替换。

或者换一种更笼统的方式,因为这可能会帮助人们理解它:

 $and: ["Key1": "Value1", "Key2": "Value2"] 

【讨论】:

我很高兴更改已接受的答案,但我现在没有时间对此进行测试。也许如果@sdepold 想插话?

以上是关于续集如何查找具有多个 where 子句和时间戳的行 > NOW()的主要内容,如果未能解决你的问题,请参考以下文章

如何选择具有当天时间戳的行?

如何选择具有当天时间戳的行?

使用可选参数对 Where 子句进行续集

SQLite 中 WHERE 子句中的聚合函数

如何使用引用多个表的 WHERE 子句删除 sqlite 中的行?

在子查询中续集“WHERE”子句