Jak mogę napisać szablon dosłowny (multi-line) w ES6 ciąg, który będzie zawierał odwrócone, pojedyncze apostrofy (`) i Sama (tj zagnieżdżone backticks).Szablon literały z zagnieżdżonych backticks (`) w ES6
Np:
var query = `
UPDATE packet
SET
`association` = "3485435",
`tagname` = "associated"
`
Powód muszę go:
To oczywiste w moim przykładzie kodu powyżej.
Próbuję budować zapytania node-mysql jako Strings
i przechowywać je w zmiennej do przekazywania do MySQL. Składnia MySQL Query wymaga odwrócone, pojedyncze apostrofy dla UPDATE
-Style zapytaniami.
Jedynym sposobem mogę mieć ich wygląd schludny i uporządkowany jest za pomocą literałów szablonów, w przeciwnym razie zapytań przy użyciu zwykłego ciągi jednowierszowym wyglądają trochę straszny Powodują one skończyć będąc bardzo, bardzo długo, jest kilka przypadków.
Również nie chcę kończyć linii przy użyciu
\n
, ponieważ jest uciążliwe.
Mój instynkt reaguje z przerażeniem na ideę zwykłych ciągów szablonów używanych do konstruowania zapytań SQL, ale domyślam się, że nie masz żadnych zmiennych w twoim przykładzie, więc nie ma jeszcze ryzyka. Zachowaj ostrożność (tzn. Nie dodawaj) o dodawaniu tutaj interpolacji zmiennej, chyba że używasz funkcji znacznika szablonu specjalnie do konstruowania zapytań, które wykonują autoescaping kontekstowy. –
@JeremyBanks Hm, czy jest to obawa SQL iniekcji? Jeśli tak jest, używam 'connection.escape()' dla każdego parametru, który przychodzi przez moje API, które zajmuje się tym. Używam sterownika [węzeł-mysql] (https: // github.com/felixge/node-mysql), który zawiera tę metodę. –
Tak, to jest moja troska. Możliwe jest napisanie bezpiecznego kodu za pomocą czegoś w stylu 'connnection.escape()', ale to stwarza możliwość, że stracisz parametr (lub ucieczka zostanie usunięta przez zmasakrowaną prostą lub coś podobnego). Ogólny trend jest oddalony od wszystkiego, co * kiedykolwiek * wymaga ręcznego przechodzenia i konsekwentnego korzystania z interfejsów API dostarczonych przez DB w celu jawnego dostarczania wartości dla wyrażeń zapytań. Wygląda na to, że sort-of-node-mysql używa wspólnego podejścia pozwalając ci wstawić '?' Jako symbol zastępczy wartości w zapytaniu i przekazać wartości jako tablicę. Sugeruję, że pomimo problemów. –