使用带参数的原始查询时如何在续集中转义冒号

xan*_*tis 5 sequelize.js

我是续集世界的新手。假设我需要像这样运行一个查询(在postgres上):

select to_char(column1, 'HH:MM:SS') from table1 where param1 = :param
Run Code Online (Sandbox Code Playgroud)

使用sequelize,我必须像这样设置原始查询:

db.sequelize.query(query, { replacements: { param: 'whatever' }, type: db.sequelize.QueryTypes.SELECT }).then((list) => { ... });
Run Code Online (Sandbox Code Playgroud)

我遇到麻烦了,因为冒号字符出现在查询字符串中;sequelize似乎在解释那些冒号的替代物。

为了使sequelize正确解析字符串,我必须使用任何特殊的语法to_char(column1, 'HH:MM:SS')吗?

小智 7

希望我还不算太晚,但我遇到了同样的问题,我所做的是将字符串格式放入替换中。使用你的例子,它会是这样的:

select to_char(column1, :format) from table1 where param1 = :param
Run Code Online (Sandbox Code Playgroud)

和续集部分:

db.sequelize.query(query, { replacements: { param: 'whatever', format: 'HH:MM:SS' }, type: db.sequelize.QueryTypes.SELECT }).then((list) => { ... });
Run Code Online (Sandbox Code Playgroud)

我找不到“官方”的方法来做到这一点,所以这就像一个小小的迂回方法。