#node.js #sql-server
Вопрос:
Я пытаюсь извлечь данные из базы данных SQL Server с помощью node.js, и передача данных в чат-бота Google.
Вот как выглядит мой запрос SQL Server
INSERT INTO @Return
SELECT 'You' '' 've assigned ' CONVERT(varchar(4), COUNT(1)) ' to yourself'
Это функция, которая отправляет данные в чат-бота Google.
function GbWebhookFunction(){
this.sendMessage = async function(strMessage){
console.log(strMessage);
fetch(webhookURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
body: "{'text': '" strMessage "'}",
}).then((response) => {
console.log(response);
});
};
};
Это выводит:
Youve assigned X to yourself
Я попытался добавить в свою функцию приведенный ниже код, но это не сработало.
strMessage = strMessage.replace("", "'");
Я удалил один
из своих SQL — запросов, но он вывел:
Youe assigned X to yourself
Выводится при удалении
из SQL-запроса
Есть какие-нибудь идеи о том, как я могу
заменить его одной цитатой?
Комментарии:
1. Я предлагаю вам попробовать реализовать собственные методы побега. Например, вот как вы вставляете цитату в SQL:
SELECT 'You''ve assigned'
. Теперь у вас есть именно та строка, которую вы хотите получить из SQL, вам нужно решить, как сохранить ее в javascript.
Ответ №1:
В своем запросе вы забыли добавить единственную цитату. Запрос, скорее всего, должен быть
INSERT INTO @Return
SELECT 'You've assigned ' CONVERT(varchar(4), COUNT(1)) ' to yourself'
Редактировать
Основываясь на некоторых приведенных ошибках, я бы вместо этого предложил использовать двойные одинарные кавычки. Это означает, что SQL-запрос должен быть следующим:
INSERT INTO @Return
SELECT 'You''ve assigned ' CONVERT(varchar(4), COUNT(1)) ' to yourself'
Комментарии:
1. Подсветка, используемая переполнением стека, на самом деле не любит экранирования, однако это допустимо.
2. Когда я вставляю это в SSMS и запускаю его, я получаю Msg 102, уровень 15, Состояние 1, Строка 1 Неверный синтаксис рядом с «назначено». Msg 105, Уровень 15, Состояние 1, Строка 1 Незакрытая кавычка после символьной строки «.
3. Я внес правку. По-видимому, mariadb обрабатывает побеги иначе, чем mysql
4. Поскольку это для SQL Server, я не уверен, какое отношение имеют mariadb и mysql.
5. Последнее редактирование было скорректировано с учетом совместимости с MySQL, я изначально просто предположил, что mariadb унаследовал цитату, вырвавшуюся из MySQL