Sql 如何通过Node.js将动态字符串附加到Postgres中的文本类型列?
我正在尝试更新Node.js的Sql 如何通过Node.js将动态字符串附加到Postgres中的文本类型列?,sql,node.js,postgresql,Sql,Node.js,Postgresql,我正在尝试更新Node.js的Postgres中的文本类型列。我想向文本类型列中的数据追加一个动态字符串 但我犯了个错误 “错误:无法确定参数$1的数据类型” var pg=require('pg'); var connectionString=process.env.DATABASE_URL | |“pg://admin:guest@localhost:5432/图像搜索实验”; var client=新的pg.client(connectionString); client.connect
Postgres中的文本类型列。我想向文本类型列中的数据追加一个动态字符串
但我犯了个错误
“错误:无法确定参数$1的数据类型”
var pg=require('pg');
var connectionString=process.env.DATABASE_URL | |“pg://admin:guest@localhost:5432/图像搜索实验”;
var client=新的pg.client(connectionString);
client.connect();
query(“如果存在,则删除表imagesearchexperiment”);
query(“如果不存在,则创建表imagesearchexperiment(ipAddress varchar(64),searchqueries text)”;
query(“插入ImageSearchExperience(ipAddress,searchqueries)值($1,$2)”,[“ipAddress1”,“query1query2query3]”);
query(“插入ImageSearchExperience(ipAddress,searchqueries)值($1,$2)”,[“ipAddress2”,“query1query2query3]”);
query(“插入ImageSearchExperience(ipAddress,searchqueries)值($1,$2)”,[“ipAddress3”,“query1query2query3]”);
var searchQuery=“query4”;
var ip=“ipAddress3”;
//以下行导致错误-错误:无法确定参数$1的数据类型
query(“更新imagesearchexperiment集searchqueries=CONCAT($1,searchqueries),其中ipAddress=$2,[searchQuery,ip])代码>函数CONCAT
不确定它获取的数据类型。显式类型转换为::text
将有助于:
CONCAT($1::text, searchqueries)
尝试CONCAT($1::text,searchquerys)
;)如果您确定所有字符串均为null
,则可以使用$1 | | searchqueries
——这会发生,因为CONCAT()
使用(更具体地说是any
)。因此,您必须始终使用参数进行调用,查询解析器知道这些参数的类型。您可以在SQL中使用强制转换来实现这一点(如之前所建议的),或者(通常)可以通过绑定设置参数类型(在准备语句的情况下):但这在很大程度上取决于您的客户端库。@vitaly-t谢谢:),它现在可以工作了
UPDATE imagesearchexperiment SET searchqueries = '"+ searchqueries="' WHERE ipAddress = "'+ ip+'"