Je travaille sur un serveur express et j'ai des difficultés à accéder à ma base de données à partir d'un fichier de routage que j'ai configuré pour les utilisateurs. Lorsque j'essaie de faire une demande d'obtention je reçois cela comme une erreur.Connexion à la base de données dans Node.js à partir des routes
"code": "ER_NO_DB_ERROR", "errno": 1046, "SqlState": "index" "3D000", : 0
Je suis en train de chercher une solution en ligne, mais la plupart des réponses suggèrent de demander le fichier db.js partout où je le fais déjà. J'ai le sentiment que j'ai besoin de passer la connexion que j'ai faite dans app.js mais je ne sais pas trop comment faire. Les parties pertinentes de mes fichiers sont ci-dessous. Les informations de connexion à la base de données ont été rédigées, j'obtiens une connexion réussie dans app.js. Je suis relativement nouveau à ce sujet, donc toute aide serait appréciée, en particulier s'il y a une meilleure façon d'utiliser le pool implémenté dans db.js.
app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var index = require('./routes/index');
var users = require('./routes/users');
var mysql = require('mysql')
var app = express();
var users = require('./routes/users');
var media = require('./routes/media');
var tv = require('./routes/tv');
var movies = require('./routes/movies');
var db = require('./db.js')
var connection = mysql.createConnection({
port: '3306',
host: '*********************',
user: '********',
password: '******'
})
db.connect(function(err) {
if (err) {
console.log('Unable to connect to MySQL.')
process.exit(1)
} else {
console.log('Successfully connected')
}
})
app.use('/api', users);
modèles/user.js
var db = require('../db.js');
var passwordHash = require('password-hash');
exports.getAll = function(done) {
db.get().query('SELECT * FROM users', function (err, rows) {
if (err) return done(err)
done(null, rows)
})
}
routes/users.js
var express = require('express');
var router = express.Router()
var user = require('../models/user');
var db = require('../db.js');
//this doesn't prInt anything currently. This is prompting me to believe I somehow
//need to pass a connection object or am using the pool properly.
console.log(db.get());
router.route('/users').get(function(req, res) {
user.getAll(function(err, users) {
if (err) {
return res.send(err);
}
res.json(users);
});
});
db.js
// ceci est pris surtout à partir d'un tutoriel que j'ai trouvé en ligne
var mysql = require('mysql')
, async = require('async')
var PRODUCTION_DB = 'app_prod_database'
, TEST_DB = 'app_test_database'
exports.MODE_TEST = 'mode_test'
exports.MODE_PRODUCTION = 'mode_production'
var state = {
pool: null,
//mode: null,
}
exports.connect = function(done) {
state.pool = mysql.createPool({
port: '3306',
host: '***************',
user: '*********',
password: '*******'
//database: mode === exports.MODE_PRODUCTION ? PRODUCTION_DB : TEST_DB
})
//state.mode = mode
done()
}
exports.get = function() {
return state.pool
}
exports.fixtures = function(data) {
var pool = state.pool
if (!pool) return done(new Error('Missing database connection.'))
var names = Object.keys(data.tables)
async.each(names, function(name, cb) {
async.each(data.tables[name], function(row, cb) {
var keys = Object.keys(row)
, values = keys.map(function(key) { return "'" + row[key] + "'" })
pool.query('INSERT INTO ' + name + ' (' + keys.join(',') + ') VALUES (' + values.join(',') + ')', cb)
}, cb)
}, done)
}
exports.drop = function(tables, done) {
var pool = state.pool
if (!pool) return done(new Error('Missing database connection.'))
async.each(tables, function(name, cb) {
pool.query('DELETE * FROM ' + name, cb)
}, done)
}
Merci pour la réponse, j'ai ajouté cela et je reçois maintenant un "code": "ER_DBACCESS_DENIED_ERROR", "errno": 1044, Qui est le progrès. Je vais regarder plus en détail pourquoi je ne suis pas en mesure d'accéder correctement à mes tables à partir d'ici –