如何解决绑定消息提供3个参数,但准备好的语句“”需要0 [Node js,pg]
我想像这样将参数传递给我的pg查询:
await client.query("DO\n" +
"$do$\n" +
"DECLARE\n" +
" _db TEXT := $1;\n" +
" _user TEXT := $2;\n" +
" _password TEXT := $3;\n" +
"BEGIN\n" +
" CREATE EXTENSION IF NOT EXISTS dblink; -- enable extension \n" +
" IF EXISTS (SELECT 1 FROM pg_database WHERE datname = _db) THEN\n" +
" RAISE NOTICE 'Database already exists';\n" +
" ELSE\n" +
" PERFORM dblink_connect('host=localhost user=' || _user || ' password=' || _password || ' dbname=' || current_database());\n" +
" PERFORM dblink_exec('CREATE DATABASE ' || _db);\n" +
" END IF;\n" +
"END\n" +
"$do$",[process.env.database,process.env.user,process.env.password]);
但是我得到bind message supplies 3 parameters,but prepared statement "" requires 0
。
如果不传递参数数组,则会出现there is no parameter $1
错误。
那么如何将参数传递给查询?
解决方法
最重要的问题是,根据文档here,匿名函数DO
不接受参数。这意味着提供的参数[process.env.database,process.env.user,process.env.password]
无处可走,因为$ *占位符埋在函数内部。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。