Экспресс и mysql. строки не определены

0

Это мой код. Я пишу API, и я хочу отправить информацию о продуктах, которые клиент имеет.

 const express = require('express');
const mysql = require('mysql');
const morgan = require('morgan');

const app = express();

app.use(morgan('short'));
app.use(express.static('./public'));
// app.get('/', (req, res, next)=>{
//     res.send('Hello World');
// });
function getConnection(){
    return  mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password:'samsung793',
        database: 'demo2'

    })
}
app.get('/models/:id', (req, res, next)=>{
    console.log('Fetching id ' + req.params.id);
    const connection = getConnection();
    const queryStr = 'SELECT * FROM products WHERE id=?'

    const modelId = req.params.id;

    connection.query( queryStr, [modelId], (err, rows, fields)=>{
        if (err){
            res.send('<h1>500 bad request</h1> Error! Sorry for error, we are working on it!');
            res.sendStatus(500);
           return;
            //throw err;
        }
        console.log('Ready');
        res.json(rows);
    })
    // res.end();
})
app.get('/:name', (req, res, next)=>{
    console.log('Fetching name ' + req.params.name);
    const connection = getConnection();
    const queryStr = 'SELECT * FROM products WHERE MATCH(name) AGAINST(${req.params.name}, in natural language)'


    const modelName = req.params.name;

    connection.query( queryStr, [modelName], (err, rows, fields)=>{
        if (err){
            res.send('<h1>500 bad request</h1> <h3>Error!</h3> <h4>Sorry for error, we are working on it!</h4>');
            res.sendStatus(500);
           return;
            //throw err;
        }
        console.log('Ready');
        res.json(rows);
        console.log(rows);

    })
    // res.end();
})
app.listen(3000, ()=>{
    console.log('server is listening on port 3000');
} )

когда я вхожу в консоль для строк, он не определен. Как я могу это исправить? В чем проблема? Извините за первое сообщение. Теперь я редактирую и добавляю весь код. Пожалуйста, помогите мне решить эту проблему.

  • 0
    Ваш код неверен. Вам не хватает конца строки connection.query[...]
  • 0
    Правильно ли использовать обратные кавычки (в отличие от кавычек)?
Показать ещё 2 комментария
Теги:
express

2 ответа

1
Лучший ответ

Вам нужно проверить, не возникает ли какая-либо ошибка во время запроса

app.get('/:name', (req, res, next) => {
    console.log('Fetching name ' + req.params.name);
    const connection = getConnection();
    const queryStr = 'SELECT * FROM products WHERE MATCH(name) AGAINST(?, in natural language mode)';
    const modelName = req.params.name;

     connection.query( queryStr, [modelName], (err, rows, fields)=>{
        console.log('Ready');
        if(err) {
            console.log(err);
            return res.status(500).send(err);
        }
        console.log(rows);
        res.json(rows);
    })
})

Если вы используете подготовленный оператор, вам не нужно передавать ${req.params.name}, просто пройти ?

  • 0
    Когда я проверяю ошибку, он возвращает это. Ошибка: невозможно установить заголовки после их отправки.
  • 0
    это означает, что вы не опубликовали полный код app.get('/:name' , укажите полный код, вы отправляете ответ более одного раза
Показать ещё 5 комментариев
0

Спасибо за ответы. Я пишу код здесь, если кому-то это понадобится. Он работает следующим образом:

app.get('/:name', (req, res, next)=>{
    console.log('Fetching name ' + req.params.name);
    const connection = getConnection();
    const queryStr = 'SELECT * FROM products WHERE MATCH(name, url) AGAINST(? IN NATURAL LANGUAGE MODE) '


    const modelName = req.params.name;

    connection.query( queryStr, modelName, (err, rows, fields)=>{
        console.log(rows);
        if (err){
            res.status(404).send(" Something went wrong");
            // res.sendStatus(500);

            throw err;
        }
        console.log('Ready');
        res.json(rows);


    })
    // res.end();
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню