通过 Sequelize (Express/NodeJS) 访问 mysql 时出错
Error while Accessing mysql through Sequelize (Express/NodeJS)
我正在尝试开始使用 Sequelize。我遇到了一些错误,虽然我想出了并清除了其中的一些,但我无法弄清楚这个错误。
项目结构:
Project
-Client
-Server
--models
---index.js
---Sid.js
--router
---routes
----signup.js
---index.js
app.js
我的配置变量:
"Lexstart": {
"dbConfig": {
"driver": "mysql",
"user": "root",
"database": "sid1",
"password": "sid1",
"host": "127.0.0.1",
"port": "3306"
}
}
我的models/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;
};
我的router/index.js
/**
* The Index of Routes
*/
module.exports = function (app) {
// The signup route
app.use('/signup', require('./routes/signup'));
}
我的router/routes/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;
路由 localhost:3000/signup/sid 工作正常。但是 /signup 正在放弃错误。正如您在下面的错误文本中看到的那样,它显示在没有配置提供的变量值(用户名、密码、主机)的情况下尝试连接(配置变量正在工作并且可以正常获取)。我也无法在调试时解决这个问题。
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)
请指导。
悉达多
dbConfig 中没有用户名。
在您的配置中用用户名替换用户。
"dbConfig":{
"driver": "mysql",
"<strong>用户</strong>": "root",
...
var sequelize = new 续集(
dbConfig.database,
dbConfig.<strong>用户名</strong>,
转到 config.json 并将用户更改为用户名并重新启动您的应用程序。有时没有错误,应用程序无法运行。
"Lexstart": {
"dbConfig": {
"driver": "mysql",
"username": "root",
"database": "sid1",
"password": "sid1",
"host": "127.0.0.1",
"port": "3306"
}
}
我正在尝试开始使用 Sequelize。我遇到了一些错误,虽然我想出了并清除了其中的一些,但我无法弄清楚这个错误。
项目结构:
Project
-Client
-Server
--models
---index.js
---Sid.js
--router
---routes
----signup.js
---index.js
app.js
我的配置变量:
"Lexstart": {
"dbConfig": {
"driver": "mysql",
"user": "root",
"database": "sid1",
"password": "sid1",
"host": "127.0.0.1",
"port": "3306"
}
}
我的models/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;
};
我的router/index.js
/**
* The Index of Routes
*/
module.exports = function (app) {
// The signup route
app.use('/signup', require('./routes/signup'));
}
我的router/routes/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;
路由 localhost:3000/signup/sid 工作正常。但是 /signup 正在放弃错误。正如您在下面的错误文本中看到的那样,它显示在没有配置提供的变量值(用户名、密码、主机)的情况下尝试连接(配置变量正在工作并且可以正常获取)。我也无法在调试时解决这个问题。
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)
请指导。
悉达多
dbConfig 中没有用户名。
在您的配置中用用户名替换用户。
"dbConfig":{
"driver": "mysql",
"<strong>用户</strong>": "root",
...
var sequelize = new 续集(
dbConfig.database,
dbConfig.<strong>用户名</strong>,
转到 config.json 并将用户更改为用户名并重新启动您的应用程序。有时没有错误,应用程序无法运行。
"Lexstart": {
"dbConfig": {
"driver": "mysql",
"username": "root",
"database": "sid1",
"password": "sid1",
"host": "127.0.0.1",
"port": "3306"
}
}