Não faça isso
Você está perguntando sobre a solução errada para o problema.
Para substituir os apóstrofos por apóstrofos de barra invertida, você pode usar:
str = msg.replace(/'/g, '\\\'');
mas você não deve fazer isso . Estou apenas fornecendo essa informação porque é sobre isso que sua pergunta pergunta, mas leia abaixo.
Por que é uma má ideia
Você não deve fazer isso no lado do cliente e também não deve fazer no lado do servidor. Se evitar vulnerabilidades de injeção de SQL fosse uma simples questão de substituir apóstrofos por apóstrofos de barra invertida, então não seria um problema. Infelizmente é mais complicado.
Tendo as informações que você forneceu, é até impossível dizer se o apóstrofo de barra invertida faria o que você espera em primeiro lugar sem ver seu código que realmente faz as consultas ao banco de dados. Mas não importa, porque você nunca deve fazer isso. Nunca. Veja essas respostas para ver o porquê - essas perguntas não são sobre injeções de SQL, mas os exemplos de código incluem vulnerabilidades de injeção de SQL e as respostas explicam isso:
- não pode usar backtick ao usar o nodejs 7.3.0
- Node js - Aviso de rejeição de promessa ao processar muitos dados
- É possível escutar a instanciação de objetos no Node.js?
Tirinha obrigatória

O que você deve fazer em vez disso
Dito isto, você não disse qual módulo está usando para consultar o banco de dados, mas não importa se está usando o
mysql
module ou Sequelize ou qualquer coisa que valha a pena, sempre deve haver um mecanismo de interpolação de variáveis de maneira segura sem escapar manualmente e concatenar as strings. Exemplos
Você não mostrou nem uma única linha de código relevante aqui, então não posso dizer como corrigi-lo, mas considere este exemplo:
Inseguro:
connection.query(
"SELECT * FROM player WHERE nick = '"
+ data.login + "' AND pass = '" + data.pass + "'",
function (err, rows) {
//...
}
);
Ainda inseguro, complexo, ilegível, insustentável e não confiável:
connection.query(
"SELECT * FROM player WHERE nick = '"
+ data.login.replace(/'/g, '\\\'') + "' AND pass = '" + data.pass.replace(/'/g, '\\\'') + "'",
function (err, rows) {
//...
}
);
Seguro e simples:
connection.query(
"SELECT * FROM player WHERE nick = ? AND pass = ?", [data.login, data.pass],
function (err, rows) {
// ...
}
);
Mais informações
Para mais informações consulte os documentos: