Javascript ES6字符串模板:处理数组

Javascript ES6字符串模板:处理数组,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在尝试使用ES6字符串模板来查询我的数据库 我的SQL是这样的: SELECT * FROM table WHERE id IN (); in必须包含数组的每个项,因此,我尝试了以下方法: return connector.query`SELECT * FROM table WHERE AnalogHistory.TagName IN (${sensor})`.then(result => {return result.recordset}); return connector.q

我正在尝试使用ES6字符串模板来查询我的数据库

我的SQL是这样的:

SELECT * FROM table WHERE id IN ();
in必须包含数组的每个项,因此,我尝试了以下方法:

return connector.query`SELECT * FROM table WHERE AnalogHistory.TagName IN (${sensor})`.then(result => {return result.recordset});
return connector.query`SELECT * FROM table WHERE AnalogHistory.TagName IN (${sensor[0]},${sensor[1]}, ${sensor[2]}, ...)`.then(result => {return result.recordset});
这不管用。但如果我尝试这样的方法:

return connector.query`SELECT * FROM table WHERE AnalogHistory.TagName IN (${sensor})`.then(result => {return result.recordset});
return connector.query`SELECT * FROM table WHERE AnalogHistory.TagName IN (${sensor[0]},${sensor[1]}, ${sensor[2]}, ...)`.then(result => {return result.recordset});

这一次,它起作用了。所以你们知道第一种方法(清洁器)有什么不同吗?

如果不知道
query
如何处理标记参数,我们无法绝对确定,但区别在于,在第一种情况下,您提供了
query
数组作为单个参数;在第二种情况下,您提供了
query
,其中包含一系列单独的参数,这些参数之间带有逗号

显然,它对第二个很满意,而不是第一个。是否有第三个选项不那么费力,但也很实用,这完全取决于
query
的调用方式



你的评论是说它是
mssql
npm包:我没有看到任何东西表明它支持将数组作为参数传递到
query
标记函数中。这真的很不幸。

这是什么
连接器。query
,它实际上是作为标记函数编写的吗?如果是,它如何处理标记参数?我们不能在不知道的情况下回答。它们不是“字符串模板”,而是模板文本。它们自己生成一个字符串;但是当您将它们与标记函数一起使用时(就像您看起来的那样),它们可能不会。我可能误解了您想要做什么,但是
${sensor.join(“,”)}
是否适合您的需要?它将数组中的每个项转换为一个字符串,然后用一个
连接这些字符串,基本上就像您在第二个示例中所做的那样。@T.J.Crowder connector.query属于mssql NPM包。我在ES6部分跟进了他们的文档。您使用的是什么版本的文档?(假设在3和4之间有突破性的变化。)关于将数组作为标记参数传递,您在文档中看到了什么?