我正在使用Postgres。 我想使用带有findAll的sequalize.js进行查询,使用计算所得的字段得到了我无法消除的奇怪行为。在实践中,对计算所得字段的值进行sequalize插入双引号,以阻止执行Postgres查询。
选择“第一”,“最后”,“电子邮件”,“电话”,“ example.string”作为“ accessToken” ,从“ utenti”作为“ utenti” 在哪里“ utenti”。“电子邮件” =“ xxxx”和“ utenti”。“密码” =“ xxxx”);
以粗体显示有问题。如果我在计算的字段值上加上单引号,则查询效果很好 在与数据库的连接中,我添加了 quoteidentifiers:false ,但是现在我遇到了点问题。 如果在计算字段的值内有一个点,则再次添加双引号!!!!!!!!!!并查询Postgres不起作用
**这是代码node.js的示例**
const getTableData = (req, res, db) => {
const accessToken='example.string'
db.utenti.findAll({
where: {
[db.Sequelize.Op.and]:
[
{"email":”xxxx”},
{"password":”xxxx”},
]
} ,
attributes: [ 'first','last','email','phone', [ accessToken , "accessToken"]]
})
.then(items => {
if(items.length){
res.json(items)
} else {
res.json({dataExists: 'false'})
}
})
.catch(err => res.status(400).json({dbError: 'db error'}))
}
感谢您的帮助
答案 0 :(得分:0)
您可以更改此内容:
accessToken='example.string'
收件人:
accessToken='$example.string$'
答案 1 :(得分:0)
您是否尝试过使用sequelize.literal,所以您的字符串不会被转义...如下所示:
attributes: [ 'first','last','email','phone', [ sequelize.literal(accessToken) , "accessToken"]]
答案 2 :(得分:0)
sequalize.js的技巧太多。最后,我解决了。要使用字符串类型的常量(包含一个或多个点)来管理计算字段,正确的语法是这样的:
[sequelize.literal(“'” + accessToken +“'”),'accessToken']