2017-08-16 53 views
-1

我試圖使用ES6字符串模板查詢我的數據庫ES6字符串模板litterals:處理陣列

我的SQL是這樣的:

SELECT * FROM table WHERE id 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}); 

那麼這次,它的工作。那麼你們是否知道第一種方式(清潔工)會有什麼不同並以此爲依據?

+1

這是什麼'connector.query',它實際上是作爲標記函數寫入的?如果是這樣,它如何處理標籤參數?如果不知道這一點,我們無法真正回答。 –

+0

它們不是「字符串模板」,它們是模板文字。他們自己產生一個字符串;但是當你用一個標籤函數來使用它們(就像你看起來那樣),它們可能不會。 –

+1

我可能會誤解你想做的事情,但是'$ {sensor.join(「,」)}'適合你的需求嗎?它將數組中的每個項目轉換爲一個字符串,然後用''來連接這些字符串,基本上完成了你在第二個例子中所做的。 –

回答

0

如果不知道query如何處理標籤參數,我們不能絕對確定,但區別在於,在第一種情況下,您提供了query作爲單個參數的數組;在第二種情況下,您提供了query一系列帶有逗號的單獨參數。

顯然它很滿意第二個,而不是第一個。是否有第三個選項不那麼費力而且功能完全取決於如何設計query


回覆您的評論說這是mssql NPM包:我沒有看到任何東西​​表明它支持傳遞數組到query標籤功能作爲參數。這真的很不幸。