我在node.js中有以下函数,它基于name_url
对postgres进行查询。有时它起作用,有时它只是不起作用。
我也使用lib pg-promise:
exports.getLawyerByUrlName = function (name_url, callback) {
console.log(typeof name_url) //NOTICE: output string
db.one({
text: "SELECT * FROM " + lawyersTable + " WHERE name_url LIKE $1::varchar",
values: name_url,
name: "get-lawyer-by-name_url"
})
.then(function (lawyer) {
callback(lawyer);
})
.catch(function (err) {
console.log("getLawyerByUrlName() " + err)
});
}
当它不起作用时会引发错误:
getLawyerByUrlName() error: invalid input syntax for integer: "roberto-guzman-barquero"
这是一个非常奇怪的错误,我似乎无法理解其发生的原因。我之前在console.log中检查过我实际传递了一个字符串:
console.log(typeof name_url) //NOTICE: output string
name_url的我的表字段是:
CREATE TABLE lawyers(
...
name_url VARCHAR check(translate(name_url, 'abcdefghijklmnopqrstuvwxyz-', '') = '') NOT NULL UNIQUE,
答案 0 :(得分:0)
似乎不太可能该特定查询会抛出该错误,因此我建议三种可能性。第一个是导致错误的代码实际上是其他地方而且:
for(int i=0; i<sizeof(int)*8; i++){
被剪切并粘贴到代码的不同部分。
第二种可能性是“lawersTable”变量填充了意想不到的东西。
第三种可能性是我的前两个场景是错误的。 ; - )