2015-09-24 35 views
6

我想開始使用Sequelize。儘管通過計算並清除了一些錯誤,但我無法弄清楚這個問題。通過Sequelize訪問mysql時出錯(Express/NodeJS)

項目結構:

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

我的配置varriable:

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

我的模型/ 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; 

型號/ Sid.js

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

return Sid; 
}; 

我的路由器/ index.js

/** 
* The Index of Routes 
*/ 

module.exports = function (app) { 

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

我的路由器/路由/ 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; 

路線本地主機:3000 /註冊/ SID是工作的罰款。但是/註冊正在放棄錯誤。正如你可以在下面的錯誤文本中看到的,它顯示連接正在嘗試,而沒有配置提供的變量值(用戶名,密碼,主機)(配置變量正在工作和獲取正常)。在調試時我也無法弄清楚。

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) 

請指導。

Siddharth

回答

3

dbConfig中沒有用戶名。 用你的配置中的用戶名替換用戶。 "dbConfig": { "driver": "mysql", "user": "root", ... var sequelize = new Sequelize( dbConfig.database, dbConfig.username,

2

轉到config.json並將用戶更改爲用戶名並重新啓動您的應用程序。有時候沒有錯誤,應用程序不起作用。

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