Come posso scrivere un modello letterale (stringa multilinea) in ES6 che conterrà backtick (`) in sé e per sé, (i nerfittidi nidificati).Caratteri letterali con apici inversi (`) in ES6
es:
var query = `
UPDATE packet
SET
`association` = "3485435",
`tagname` = "associated"
`
Ragione ne ho bisogno:
E 'ovvio nel mio esempio codice di cui sopra.
Sto cercando di creare query node-mysql come Strings
e memorizzarle in una variabile per passarle a mySQL. La sintassi della query mySQL richiede i backtick per le query in stile UPDATE
.
L'unico modo che posso avere loro un aspetto ordinato e pulito è quello di utilizzare letterali template, altrimenti le query utilizzando normali stringhe a linea singola guardare una causa terribile po 'finiscono per essere molto, molto lungo è alcuni casi.
Inoltre, non voglio terminare le righe utilizzando
\n
perché è ingombrante.
Il mio istinto è quello di reagire con il terrore all'idea di stringhe di modello semplici utilizzati per la costruzione di query SQL, ma immagino che in realtà non hanno alcuna variabile nel tuo esempio, quindi non c'è ancora alcun rischio. Si prega di fare molta attenzione (ad esempio, non farlo) sull'aggiunta di interpolazione variabile qui, a meno che non si stia utilizzando una funzione di tag template specificatamente per la costruzione di query che sta eseguendo l'autoescaping contestuale. –
@JeremyBanks Hm, si tratta di un problema di SQL-injection-esque? Se questo è il caso sto usando 'connection.escape()' per ogni parametro che passa attraverso la mia API che si occupa di questo. Sto usando [node-mysql driver] (https: // github.com/felixge/node-mysql) che contiene questo metodo. –
Sì, questa è la mia preoccupazione. È possibile scrivere codice sicuro usando qualcosa come 'connnection.escape()', ma ciò crea la possibilità che ti manchi un parametro (o che l'escaping sia rimosso da un mera distrutto o qualcosa del genere). La tendenza generale è lontano da tutto ciò che * mai * richiede l'escaping manuale e in modo coerente utilizzando API fornite da DB per fornire esplicitamente valori per le espressioni di query. Sembra che l'ordinamento 'node-mysql' utilizzi l'approccio comune che consente di inserire'? 'Come segnaposto per i valori nella query e passare i valori come una matrice. Lo suggerisco, nonostante i problemi. –