Sequelize raw查询:有效的SQL查询不返回任何结果

Sequelize raw query: Valid SQL query returns nothing

本文关键字:查询 返回 任何 SQL 结果 raw 有效 Sequelize      更新时间:2023-09-26

我的序列化查询总是返回0个结果,但是当我复制/粘贴完全相同的查询到psql它工作正常,返回正确的行完全如预期的

  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"
如果我去掉'today'条件,我得到返回的行

是sequelize转义我的日期字符串?

如果在SQL脚本中定义了像fbid=:fbid这样的命名参数,你应该传递一个对象{fbid: 'fbid_value'}

或者如果你定义了未命名的参数fbid=?,你应该传递一个数组['fbid_value']

这里是docs http://docs.sequelizejs.com/en/latest/api/sequelize/#querysql-options-promise

尝试传递一个对象给replacement:

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