При добавлении данных в БД MySQL значения записывается как undefined

143
26 января 2021, 15:50

Прошу помощи с моим первым приложением. Использую Node js Express. Body-parser для обработки данных. При добавление записи с фронта все успешно добавляется, ошибки не возникает, но результат следующий: app.js:

const express = require('express')
const bodyParser = require('body-parser');
const mysql = require('mysql');
const path = require('path');
const app = express()
const {getHomePage} = require('./routes/index');
const {addTaskPage, addTask} = require('./routes/tasks');
const db = mysql.createConnection ({
  host: "******",
  port: "*****",
  user: "*****",
  password: "*****",
  database: "*****"
});
// connect to database
db.connect((err) => {
  if (err) {
      throw err;
  }
  console.log('Connected to database');
});
global.db = db;
// configure middleware
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // parse form data client
app.use(express.static(path.join(__dirname, 'public')));
// routes for the app
app.get('/', getHomePage);
app.get('/add', addTaskPage);
// app.get('/addSolution', addSolutionPage);
// app.post('/addSolution', addSolution);
 app.post('/add', addTask);
// app.post('/edit/:id', editPlayer);


// set the app to listen on the port
app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

task.js

const fs = require('fs');
module.exports = {
    addTaskPage: (req, res) => {
        res.render('addTask.ejs', {
            title: "Welcome to TRIZ | Add a new task"
            ,message: ''
        });
    },
    addTask: (req, res) => {
        let message = '';
        var NameTask = req.body.NameTask;
        let ConditionTask = req.body.ConditionTask;
        let Subject = req.body.Subject;
        let Age = req.body.Age;
        let taskQuery = "SELECT * FROM `TaskList` WHERE NameTask = '" + NameTask + "'";
        db.query(taskQuery, (err, result) => {
            if (err) {
                return res.status(500).send(err);
            }
            // if (result.length > 0) {
            //     message = 'Tasks already exists';
            //     res.render('addTask.ejs', {
            //         message,
            //         title: "Welcome to TRIZ | Add a new task"
            //     });
            // } 
            else {
                 let query = "INSERT INTO `TaskList` (NameTask, ConditionTask, IDUser, IDSubject, IDAge) VALUES ('" +
                 NameTask + "', '" + ConditionTask + "', 1, 1, 1)";
                 console.log(query.sql);
                        db.query(query, (err, result) => {
                            if (err) {
                                return res.status(500).send(err);
                            }
                            res.redirect('/');
                        });
            }
        });
    }
}
Answer 1

Проверьте NameTask, у вас с ним явно что-то не то, при вставке undefined говорит, что req.body.NameTask нет такого объекта в req.body, проверьте на вывод req.body (что в нем приходит на вставку), скорее всего там массив записей и вставка будет либо в цикле, либо если там один элемент всегда, то так req.body[0].NameTask

READ ALSO
Yii2 маршрутизация UrlManager

Yii2 маршрутизация UrlManager

Есть такой сайт в котором 1 пользователь может выбрать в каком проекте хочет работатьНапример: Заходит на главную страницу, выбирает себе...

128
Отложить выполнение файлов php

Отложить выполнение файлов php

Задача: запустить поочередно с определенной задержкой ряд php файловПытался следующим образом - в общий php файл, подключил нужные, и поставил...

120
Как научить бота отвечать в беседе вк?

Как научить бота отвечать в беседе вк?

Есть vk_api, где все функции записаны, и есть обработчик, botphp В нем прописано:

112