Sql server 在mssql中运行查询时出错

Sql server 在mssql中运行查询时出错,sql-server,node.js,string-interpolation,Sql Server,Node.js,String Interpolation,当运行node.js和mssql来查询我的数据库时,我无法让它运行。发送到查询的字符串最终只是S。我做错了什么 这项工作: const result = await pool.query`SELECT TOP 1 * FROM sys.objects`; 这会产生一个错误: const query = 'SELECT TOP 1 * FROM sys.objects'; const result = await pool.query(query); 错误是 RequestError: Cou

当运行
node.js
mssql
来查询我的数据库时,我无法让它运行。发送到查询的字符串最终只是
S
。我做错了什么

这项工作:

const result = await pool.query`SELECT TOP 1 * FROM sys.objects`;
这会产生一个错误:

const query = 'SELECT TOP 1 * FROM sys.objects';
const result = await pool.query(query);
错误是

RequestError: Could not find stored procedure 'S'
更新

下面的工作。。。为什么呢

 const result = await pool.query([query]);

查询工作正常,这意味着您应该检查节点代码为何试图执行存储过程。您可以通过使用SQL server Profiler捕获查询、计时等来检查实际发送到服务器的内容。您为什么还要使用
字符串插值
标记?您是否正在执行任何字符串操作以生成实际查询?这是一个非常糟糕的想法,很容易导致SQL注入,因为输入文本包含
。有人可以通过
”;删除表用户--作为输入。或者它可以是
”;执行董事这将导致像您所看到的那样的错误posted@PanagiotisKanavos以字符串插值为例。这不是生产代码。不,它不起作用。当发送一个简单字符串时,它会在字符上拆分,但在传递字符串插值时不会拆分。如何拆分?哪里如果您对某些代码有问题,您应该发布该代码。不知何故,你在某处调用了
s
而不是该查询。不,
teadious
似乎期望一个数组。我仍然想知道为什么字符串插值版本有效。@PanagiotisKanavos似乎我学到了一些新东西。。。将
`something`
传递给函数会将其作为数组传递:)