Не могу найти мою ошибку в экранировании строки с помощью backtick - PullRequest
1 голос
/ 15 марта 2020

Моя строка без обратных кавычек работает нормально, когда я пишу как,

client.query("SELECT EXISTS(SELECT 1 FROM companiestable WHERE adminemail = 'givenMail@gmail.com')", 
  (err, res) => {
    if (err) {
      console.log(err.stack)
    } else {
     console.log(res.rows[0].exists);
    }
});

Но когда я пытаюсь принять это электронное письмо в качестве параметра с помощью обратных кавычек, оно не работает. Я не могу найти свою ошибку.

var givenmail = 'givenMail@gmail.com';

client.query(`SELECT EXISTS(SELECT 1 FROM companiestable WHERE adminemail = ${givenmail});`, 
  (err, res) => {
    if (err) {
      console.log(err.stack)
    } else {
     console.log(res.rows[0].exists);
    }
});

1 Ответ

1 голос
/ 15 марта 2020

Вам необходимо добавить кавычки вокруг вашего письма в строку шаблона. Без них ваша строка будет выглядеть так:

SELECT EXISTS(SELECT 1 FROM companiestable WHERE adminemail = givenMail@gmail.com;

Что вам нужно, это кавычки вокруг письма, sql будет кричать на вас в противном случае. Вот как это выглядит в строке шаблона:

`SELECT EXISTS(SELECT 1 FROM companiestable WHERE adminemail = '${givenmail}');`

Обратите внимание на кавычки вокруг введенного значения. Теперь он разрешит:

SELECT EXISTS(SELECT 1 FROM companiestable WHERE adminemail = 'givenMail@gmail.com';

И все должно быть снова мирным в SQLand.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...