2015-09-24 19 views
6

Ich versuche, mit Sequelize zu starten. Ich bin vor ein paar Fehler, obwohl einige von ihnen gemustert und gelöscht, aber dieses Ich bin, um herauszufinden, nicht in der Lage.Fehler beim Zugriff auf mysql durch Sequelize (Express/NodeJS)

Projektstruktur:

Project 
-Client 
-Server 
    --models 
    ---index.js 
    ---Sid.js 
    --router 
    ---routes 
     ----signup.js 
    ---index.js 
    app.js 

meine Config varriable:

"Lexstart": { 
    "dbConfig": { 
    "driver": "mysql", 
    "user": "root", 
    "database": "sid1", 
    "password": "sid1", 
    "host": "127.0.0.1", 
    "port": "3306" 
    } 
} 

Meine Modelle/index.js:

var fs  = require("fs"); 
var path  = require("path"); 
var Sequelize = require('sequelize'); 
var config = require('config'); // we use node-config to handle environments 

var dbConfig = config.get('Lexstart.dbConfig'); 

// initialize database connection 
var sequelize = new Sequelize(
    dbConfig.database, 
    dbConfig.username, 
    dbConfig.password,{ 
     host: dbConfig.host, 
     dialect: dbConfig.driver 
} 
); 
var db  = {}; 

fs 
.readdirSync(__dirname) 
.filter(function(file) { 
    return (file.indexOf(".") !== 0) && (file !== "index.js"); 
}) 
.forEach(function(file) { 
    var model = sequelize.import(path.join(__dirname, file)); 
    db[model.name] = model; 
}); 

Object.keys(db).forEach(function(modelName) { 
if ("associate" in db[modelName]) { 
    db[modelName].associate(db); 
} 
}); 

db.sequelize = sequelize; 
db.Sequelize = Sequelize; 

module.exports = db; 

models/Sid.js

module.exports = function(sequelize, DataTypes) { 
    var Sid = sequelize.define("Sid", { 
     username: DataTypes.STRING, 
     password: DataTypes.STRING 
    }); 

return Sid; 
}; 

mein Router/index.js

/** 
* The Index of Routes 
*/ 

module.exports = function (app) { 

// The signup route 
app.use('/signup', require('./routes/signup')); 
} 

mein Router/Routen/signup.js

var models = require('../../models'); 
var Sid = models.Sid; 
// Include Express 
var express = require('express'); 
// Initialize the Router 
var router = express.Router(); 
var config = require('config'); // we use node-config to handle environments 


// Setup the Route 
router.get('/', function (req, res) { 

Sid.findAll().then(function(users) { 
    console.log(users);; 
}); 

// return a json response to angular 
res.json({ 
    'msg': users 
}); 
}); 

router.get('/sid', function (req, res) { 

// return a json response to angular 
res.json({ 
    'msg': "sid" 
}); 
}); 



// Expose the module 
module.exports = router; 

Die Route localhost: 3000/Anmeldungen/sid funktioniert gut. Aber die/Anmeldung gibt Fehler auf. Wie Sie in dem Fehlertext unten sehen können, dass die Verbindung zeigt, versucht, ohne die Konfiguration wird geliefert Variablenwert (Benutzername, Passwort, Host) (Die Konfigurationsvariable arbeitet und das Abrufen in Ordnung). Das kann ich auch beim Debuggen nicht herausfinden.

Unhandled rejection SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: YES) 
at Handshake._callback (/Users/siddharthsrivastava/Documents/sites/express/LexStart/server/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:51:20) 
at Handshake.Sequence.end (/Users/siddharthsrivastava/Documents/sites/express/LexStart/server/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24) 
at Handshake.ErrorPacket (/Users/siddharthsrivastava/Documents/sites/express/LexStart/server/node_modules/mysql/lib/protocol/sequences/Handshake.js:103:8) 
at Protocol._parsePacket (/Users/siddharthsrivastava/Documents/sites/express/LexStart/server/node_modules/mysql/lib/protocol/Protocol.js:274:23) 
at Parser.write (/Users/siddharthsrivastava/Documents/sites/express/LexStart/server/node_modules/mysql/lib/protocol/Parser.js:77:12) 
at Protocol.write (/Users/siddharthsrivastava/Documents/sites/express/LexStart/server/node_modules/mysql/lib/protocol/Protocol.js:39:16) 
at Socket.<anonymous> (/Users/siddharthsrivastava/Documents/sites/express/LexStart/server/node_modules/mysql/lib/Connection.js:96:28) 
at Socket.emit (events.js:107:17) 
at readableAddChunk (_stream_readable.js:163:16) 
at Socket.Readable.push (_stream_readable.js:126:10) 
at TCP.onread (net.js:538:20) 

Bitte führen Sie.

Siddharth

Antwort

3

Es gibt keine Benutzernamen in DBConfig ist. Ersetzen Sie Benutzer mit dem Benutzernamen in der Config . "dbConfig": { "driver": "mysql", "user": "root", ... var sequelize = new Sequelize( dbConfig.database, dbConfig.username,

2

Gehen Sie zu config.json und ändern Sie den Benutzer in Benutzername und starten Sie Ihre App neu. Manchmal gibt es keine Fehler und App funktioniert einfach nicht.

"Lexstart": { 
    "dbConfig": { 
    "driver": "mysql", 
    "username": "root", 
    "database": "sid1", 
    "password": "sid1", 
    "host": "127.0.0.1", 
    "port": "3306" 
    } 
} 
Verwandte Themen