Невозможно выбрать значение из базы данных, где запись содержит da sh ('-') в приложении node / express - PullRequest
1 голос
/ 02 марта 2020

Я создаю node.js / express приложение, и я хочу использовать uuid для генерации токена. токен содержит da sh. Когда я пытаюсь выбрать столбец, в котором токен похож на fdda765f-fc57-5604-a269-52a7df8164e, он не работает, но когда токен похож на fdda765ffc575604a26952a7df8164e, он работает. Кроме того, я попытался набрать SQL запрос в панели PHPmyadmin, и он вернул мой столбец, где токен был с черточками? Я использую этот модуль const mysql = require ('mysql');

Также я узнал, когда передаю значение непосредственно в запрос, например:

"SELECT CONFIRM FROM ORDERS WHERE TOKEN = 'd63d2-5a15-11ea-ae4d-79a508'"

, а не с ? это также работает.

вот мой код

exports.getConfirmation= function(token) {
    return new Promise((resolve, reject) => {
    var sql = "SELECT CONFIRM FROM ORDERS WHERE TOKEN = ?";
    con.query(sql, [token], function (err, rows) {
        if (err) {
            return reject(err);
        } else {
            return resolve(JSON.parse(JSON.stringify(rows)));
        }
    });
  })
}

Любые идеи, как я могу решить эту проблему?

Ответы [ 2 ]

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

Попробуйте заменить

var sql = "SELECT CONFIRM FROM ORDERS WHERE TOKEN = ?";

на

var sql = "SELECT CONFIRM FROM ORDERS WHERE TOKEN = '?'";
0 голосов
/ 02 марта 2020

Может быть, этот фрагмент помогает отладить мой код. Я на самом деле получил токен из req.params. Возможно, он анализирует его неверным образом

let tok = req.params.generatedToken;
db.getConfirmation(tok)
            .then((data) => {
                let confirmation = data[0].CONFIRM;

Я получаю эту ошибку типа: ошибка: невозможно прочитать свойство 'ПОДТВЕРДИТЬ' из неопределенного

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