typescript 难道这种编写UPDATE查询的方式是假的?

pgccezyw  于 2022-12-05  发布在  TypeScript
关注(0)|答案(2)|浏览(110)

我正在用这个查询更新我的postgres数据库:

await client.connect();
        const statusDeconnect = product.fields.StatusSendDeconnect;
        const UserDeconnect = product.fields.UserDeconnect;
        console.log('Status to add : ' + statusDeconnect + ' UserId that will deconnect : ' + UserDeconnect);
        const updateSend = await client.queryArray`UPDATE userconnectionstatus SET status = ${statusDeconnect} WHERE idconnection = ${UserDeconnect}`;
        console.log('User ' + UserDeconnect + ' Has been deconnected');

我得到一个postgres错误,说idconnection列不存在
控制台中的结果:
enter image description here
我的表的Pgadmin页:
enter image description here

vxf3dgd4

vxf3dgd41#

您似乎正在尝试使用模板字符串在代码中构建动态SQL查询。查询中的${statusDeconnect}和${UserDeconnect}表达式是您要在运行时绑定到查询的值的占位符。
但是,在执行查询时,您似乎没有为这些占位符提供实际值。这将导致查询失败,因为占位符将不会被替换为所需的值。
要解决此问题,您需要在执行查询时提供statusDeconnect和UserDeconnect占位符的值。通过将这些值作为附加参数传递给client.queryArray函数,可以完成此操作,如下所示:

const updateSend = await client.queryArray(`
    UPDATE userconnectionstatus
    SET status = ${statusDeconnect}
    WHERE idconnection = ${UserDeconnect}
`,
statusDeconnect,
UserDeconnect
);

在此示例中,statusDeconnect与UserDeconnect变量作为附加参数传递给client.queryArray函数,它们得值将用于替换查询中相应得占位符.
我希望这对你有帮助!如果你有任何其他问题,请告诉我。

mm5n2pyu

mm5n2pyu2#

您的queryArray函数前后缺少括号。它应该是:
编辑:正如在评论中指出的,我不是正确的-括号是不需要的。

const updateSend = await client.queryArray(`UPDATE userconnectionstatus SET status = ${statusDeconnect} WHERE idconnection = ${UserDeconnect}`);

相关问题