Sequelize - 无法读取未定义的 属性 'define'
Sequelize - Cannot read property 'define' of undefined
我正在尝试使用 sequelize 将记录插入 MYSQL table。
已安装 sequelize 和 mysql。
npm install --save sequelize
npm install --save mysql
在app.js
中定义
var Sequelize = require('sequelize');
db.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('randomdb', 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
port : 8889,
pool: {
max: 5,
min: 0,
idle: 10000
}
});
exports.sequelize = sequelize;
module.exports = Sequelize;
routes/index.js
var express = require('express');
var router = express.Router();
var sequelize = require('../db').sequelize;
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', {title: 'Express'});
});
router.get('/adduser', function (req, res) {
var User = sequelize.define('users', {
first_name: Sequelize.STRING
});
sequelize.sync().then(function () {
return User.create({
first_name: 'janedoe'
});
}).then(function (jane) {
console.log(jane.get({
plain: true
}))
});
});
module.exports = router;
这是错误。
Cannot read property 'define' of undefined
TypeError: Cannot read property 'define' of undefined
缺少什么?
编辑 2
db.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('randomdb', 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
port: 8889,
pool: {
max: 5,
min: 0,
idle: 10000
},
define: {
timestamps: false
}
});
var db = {};
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
models/user.js
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;
var User = sequelize.define('random', {
first_name: Sequelize.STRING
});
module.exports = User;
routes/index.js
var express = require('express');
var router = express.Router();
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;
var User = require('../models/user');
router.get('/adduseryes', function (req, res) {
sequelize.sync().then(function () {
return User.create({
first_name: 'janedoe'
});
}).then(function (jane) {
res.send("YES");
});
});
module.exports = router;
在您的 db.js 文件中,您正在用 Sequelize 变量覆盖 exports
变量。在 node.js、module.exports
== exports
中。试试这个:
var Sequelize = require('sequelize');
var sequelize = new Sequelize(...);
var db = {};
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
然后,你可以在routes/index.js中修改你的import如下:
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;
我正在尝试使用 sequelize 将记录插入 MYSQL table。
已安装 sequelize 和 mysql。
npm install --save sequelize
npm install --save mysql
在app.js
中定义var Sequelize = require('sequelize');
db.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('randomdb', 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
port : 8889,
pool: {
max: 5,
min: 0,
idle: 10000
}
});
exports.sequelize = sequelize;
module.exports = Sequelize;
routes/index.js
var express = require('express');
var router = express.Router();
var sequelize = require('../db').sequelize;
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', {title: 'Express'});
});
router.get('/adduser', function (req, res) {
var User = sequelize.define('users', {
first_name: Sequelize.STRING
});
sequelize.sync().then(function () {
return User.create({
first_name: 'janedoe'
});
}).then(function (jane) {
console.log(jane.get({
plain: true
}))
});
});
module.exports = router;
这是错误。
Cannot read property 'define' of undefined
TypeError: Cannot read property 'define' of undefined
缺少什么?
编辑 2
db.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('randomdb', 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
port: 8889,
pool: {
max: 5,
min: 0,
idle: 10000
},
define: {
timestamps: false
}
});
var db = {};
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
models/user.js
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;
var User = sequelize.define('random', {
first_name: Sequelize.STRING
});
module.exports = User;
routes/index.js
var express = require('express');
var router = express.Router();
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;
var User = require('../models/user');
router.get('/adduseryes', function (req, res) {
sequelize.sync().then(function () {
return User.create({
first_name: 'janedoe'
});
}).then(function (jane) {
res.send("YES");
});
});
module.exports = router;
在您的 db.js 文件中,您正在用 Sequelize 变量覆盖 exports
变量。在 node.js、module.exports
== exports
中。试试这个:
var Sequelize = require('sequelize');
var sequelize = new Sequelize(...);
var db = {};
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
然后,你可以在routes/index.js中修改你的import如下:
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;