Node.js Sequelize-无法读取属性';定义';未定义的

Node.js Sequelize-无法读取属性';定义';未定义的,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,我正在尝试使用sequelize将一条记录插入MYSQL表 安装了sequelize和mysql npm install --save sequelize npm install --save mysql 在app.js中定义了它 var Sequelize = require('sequelize'); db.js routes/index.js var express = require('express'); var router = express.Router(); var se

我正在尝试使用sequelize将一条记录插入MYSQL表

安装了sequelize和mysql

npm install --save sequelize

npm install --save mysql
在app.js中定义了它

var Sequelize = require('sequelize');
db.js

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;
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;
这里是错误

无法读取未定义的属性“define”

TypeError:无法读取未定义的属性“define”

少了什么

编辑2

db.js

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 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;
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文件中,您正在使用node.js、
module.exports中的Sequelize变量覆盖
exports
变量。请尝试以下方法:

var Sequelize = require('sequelize');

var sequelize = new Sequelize(...);

var db = {};

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

module.exports = db;
然后,您可以在routes/index.js中修改您的导入,如下所示:

var db = require('../db'),
  sequelize = db.sequelize,
  Sequelize = db.Sequelize;

尝试将tiny:
first\u name:Sequelize.STRING改为
first\u name:Sequelize.STRING,谢谢。你能查一下EDIT2吗?我做了一些改变,现在它工作了,但我想知道一些事情。在
user.js
中,我将
module.exports=user
,然后在
index.js
中使用它作为
var User=require('../models/User')
index.js
中的my
User
变量,是否查找其他变量?这就是它的工作原理吗?我不完全理解您的问题,但是如果您对每个变量是什么感到困惑,您可以使用
console.log
将它们打印出来。另外,您可能需要检查新代码,因为创建用户的回调可能无法正确调用。我们使用module.exports在db.js中“抛出”db,并使用require在routes/index.js中“捕获”db,对吗?希望现在清楚:)再次感谢。变量的命名是任意的,当您使用
require
导入时,您可以将其命名为任何名称。你可以说
var abcd=require('../db'),
sequelize=abcd.sequelize,
sequelize=abcd.sequelize
。我遇到了同样的问题,可能是打字错误。示例Users.create({foo:1})。检查用户是否正确。