2016-10-27 12 views
0

を返していない私のsequelizeクエリは常に、0の結果を返します が、私は/ psqlのにまったく同じクエリをコピー&ペーストするとき、それはSequelize生のクエリ:有効なSQLクエリは何も

return sequelize.query(
"SELECT * FROM orders" + 
" INNER JOIN sizes ON orders.sizeid = sizes.sizeid" + 
" INNER JOIN types ON sizes.typeid = types.typeid" + 
" INNER JOIN items ON types.itemid = items.itemid" + 
" WHERE orders.fbid = :fbid AND pickuptime >= :today" + 
" ORDER BY orders.pickuptime ASC", 
{ replacements: {fbid, today}, type: sequelize.QueryTypes.SELECT } 
を期待どおりに正しい行を返す、正常に動作します

);

FBIDが今日整数&ですが、形状の文字列である「YYYY-MM-DD」
私は「今日の条件をドロップすると、私は行が

が私の日付文字列をエスケープsequelizeです返さ取得?

+0

あなたは、直接(例えば、コマンドラインを介して)データベースにSELECT' '生成を実行してみましたか? ':today'の前後に一重引用符がないと思います。 – FDavidov

+0

ちなみに、 'today'の値がわかっているのであれば、バインディングメカニズムを使う代わりに、文字列の一部として直接展開してみませんか? – FDavidov

+0

残念なことに:todayの値は定数ではなく、一重引用符で囲むことでsequelizeの解析でエラーが発生します。 – Potrimpo

答えて

0
あなたがオブジェクト {fbid: 'fbid_value'}を渡す必要があり、それSQLスクリプトで fbid=:fbid、 のような名前のパラメータを定義した場合

をしたり、無名のパラメータfbid=?を定義した場合、あなたは、配列['fbid_value']を渡す必要があります。ここで

ドキュメントhttp://docs.sequelizejs.com/en/latest/api/sequelize/#querysql-options-promise

は、交換にオブジェクトを渡すようにしてくださいです:

return sequelize.query(
"SELECT * FROM orders" + 
" INNER JOIN sizes ON orders.sizeid = sizes.sizeid" + 
" INNER JOIN types ON sizes.typeid = types.typeid" + 
" INNER JOIN items ON types.itemid = items.itemid" + 
" WHERE orders.fbid = :fbid AND pickuptime >= :today" + 
" ORDER BY orders.pickuptime ASC", 
{ replacements: {fbid: 'fbid_value', today: 'today_value'}, type: sequelize.QueryTypes.SELECT } 
); 
関連する問題