2011-12-05 4 views
16

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

あなたはsequelizeでファインダーの配列表記を使用しようとしましたか?この作品http://sequelizejs.com/?active=find-objects#find-objects

希望:

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

あなたは、このページをチェックアウトすることができます。それ以外の場合はバグです: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

関連する問題