2015-09-24 18 views
6

Próbuję rozpocząć korzystanie z Sequelize. Mam do czynienia z pewnymi błędami, chociaż wymyśliłem i wyczyściłem niektóre z nich, ale tego nie jestem w stanie wymyślić.Błąd podczas dostępu do mysql poprzez Sequelize (Express/NodeJS)

Struktura projektu:

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

mój config varriable:

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

Moje modele/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; 

modele/Sid.js

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

return Sid; 
}; 

mój router/index.js

/** 
* The Index of Routes 
*/ 

module.exports = function (app) { 

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

moje routera/trasy/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; 

trasa localhost: 3000/zarejestruj/sid pracuje bez zarzutu. Ale rejestracja/rezygnuje z błędu. Jak widać w poniższym tekście błędu, pokazuje on, że połączenie jest wypróbowywane bez dostarczonej wartości konfiguracyjnej (nazwa użytkownika, hasło, host) (zmienna konfiguracyjna działa poprawnie i ładuje się poprawnie). Nie mogę tego obliczyć podczas debugowania.

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) 

Proszę podać.

Siddharth

Odpowiedz

3

Brak nazwy użytkownika w dbConfig. Zastąp użytkownika nazwą użytkownika w konfiguracji. "dbConfig": { "driver": "mysql", "user": "root", ... var sequelize = new Sequelize( dbConfig.database, dbConfig.username,

2

Przejdź do config.json i zmień użytkownika na nazwę użytkownika i uruchom ponownie aplikację. Czasami nie ma błędów, a aplikacja po prostu nie działa.

"Lexstart": { 
    "dbConfig": { 
    "driver": "mysql", 
    "username": "root", 
    "database": "sid1", 
    "password": "sid1", 
    "host": "127.0.0.1", 
    "port": "3306" 
    } 
} 
Powiązane problemy