Как передать mysql переменную соединения другим модулям в NodeJS? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть дБ. js:

'use strict'

var datetime = new Date();
var app = require ('./app');
var port = 3800;
var mysql = require('mysql');
var connection = mysql.createConnection({
                user:'myuser',
                host:'127.0.0.1',
                port:'3306',
                password:'mypassword',
                database:'mydatabase'
         });

    connection.connect(function(err){
            if (err) throw err;
            //crear servidor
            app.listen(port, () => {
              console.log("Listening on port " + port);
              console.log(datetime.toISOString().slice(0,10)); //Print Date
            });
            console.log("Connected to MySQL!");
        });



module.exports = connection;

Я импортирую приложение. js на моем основном дБ. js:

'use strict'

var express = require ('express');
var bodyParser = require ('body-parser');
var app = express();

// ** LOAD ROUTES
var datos_routes = require ('./routes/datos');

// ** middlewares
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

// ** CORS
app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Authorization, X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Request-Method');
    res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');
    res.header('Allow', 'GET, POST, OPTIONS, PUT, DELETE');
    next();
});

// ** URL PREFIX
app.use('/api', datos_routes);

//  ** EXPORT
module.exports = app;

Итак, мне нужно сделать запрос на моем контроллере контроллер. js:

'use strict'

var bcrypt = require('bcrypt-nodejs');
var jwt = require ('../middlewares/jwt');
var db = require('../db');
var secret = 'secret'; //password

// TESTER
function test_datos (req, res){
  res.status(200).send({
    message: "Test OK"
  });
}

// INSERT DATA IN DATABASE
function save_data (req, res){
  var sql = "INSERT INTO datos (value, owner) VALUES ('32', 'Mike')";
  db.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Registred");
  });

  return res.status(200).send({response: "ok"});
}

module.exports = {
    test_datos,
    save_data
}

Но когда я отправляю запрос в мой API, я получаю:

Ошибка типа: db.query не является функцией.

enter image description here

Я думаю, это потому, что контроллер. js не импортирует соединение, сделанное в дБ. js:

var connection = mysql.createConnection({
                user:'myuser',
                host:'127.0.0.1',
                port:'3306',
                password:'mypassword',
                database:'mydatabase'
         });

Итак, как мне поделиться этой связью на контроллер. js?

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