2011-12-05 46 views
16

如何使用Sequelize執行此操作?Sequelize如何查找具有多個where子句和時間戳的行> NOW()

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 */ }); 

謝謝!

回答

22

您是否嘗試在後續處理中使用finders的數組表示法?

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

+0

啊,是我不好......我想我不知道,你可以有一個以上的更換使用該方法。謝謝! – lakenen

+0

沒問題:)不客氣! – sdepold

+0

你可以看看http://stackoverflow.com/a/29952136/494954? :) – lakenen

1

另一種方法:

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

請注意,此發佈最新的sequelize的版本,上面的答案是過時的。我發佈了一些解決方案,希望能夠節省一些時間。

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

注意JSON對象中的$和數組並缺少?代幣替換。

還是擺在更加普遍的方式,因爲這可能幫助別人換自己的頭周圍:

{ $and: [{"Key1": "Value1"}, {"Key2": "Value2"}] } 
+0

我很樂意改變接受的答案,但我現在沒有時間來測試這個。也許如果@sdepold想要參加? – lakenen

相關問題