Не работает запрос на вставку node.js mysql? - PullRequest
0 голосов
/ 09 июля 2020

Я работаю с node.js всего 2 дня. Я пытаюсь вставить данные mysql, когда socket.io получает и запрашивает.

Мой код выглядит следующим образом:

var http = require('http');
var express = require('express'),
        app = module.exports.app = express();
var server = http.createServer(app);
var dateFormat = require('dateformat');
var mysql = require('mysql');
var io = require('socket.io').listen(server);  //pass a http.Server instance
server.listen(3000);  //listen on port 80

var con = mysql.createConnection({
  host: "localhost",
  user: "user",
  password: "pass",
  database: "db"
});
con.on('error', function (err) {
            console.log('caught this error: ' + err.toString());
        });


io.on('connection', function (socket) {
        socket.emit('userId',{userId:socket.id});
        socket.on('messages', function (data) {

  var d=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");
  var date = d.toString();
  var sql = "INSERT INTO messages (id, sender, receiver, message, time) VALUES ('', '"+data.sender+"', '"+data.receiver+"', '"+data.text+"', '"+date+"')";
 con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });
                let messageObj = {
                        _id: data.id,
                        text: data.text,
                        createdAt: new Date(),
                        user:{
                           _id: 1
                        }
                };
                console.log('messageObj => ', messageObj);
                socket.broadcast.emit('messages',{'messages':messageObj});
                socket.emit('messages',{'messages':messageObj});
  });
});

Когда я запускаю этот код, он регистрирует объект сообщения , показывает 1 row inserted, но на самом деле этого не делает. Даже он закрывает соединение и показывает следующую ошибку:

/root/appdatahandle/server.js:34
    if (err) throw err;
             ^

Error: Cannot enqueue Query after fatal error.
    at Protocol._validateEnqueue (/root/appdatahandle/node_modules/mysql/lib/protocol/Protocol.js:212:16)
    at Protocol._enqueue (/root/appdatahandle/node_modules/mysql/lib/protocol/Protocol.js:138:13)
    at Connection.query (/root/appdatahandle/node_modules/mysql/lib/Connection.js:198:25)
    at Socket.<anonymous> (/root/appdatahandle/server.js:33:6)
    at Socket.emit (events.js:198:13)
    at /root/appdatahandle/node_modules/socket.io/lib/socket.js:528:12
    at process._tickCallback (internal/process/next_tick.js:61:11)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bubblink@1.0.0 start: `node server.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the bubblink@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-07-09T16_50_37_946Z-debug.log

Я новичок в node.js и использую mysql с этим. У меня действительно нет идей. Пожалуйста, помогите мне с этим.

Заранее спасибо :)

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