【发布时间】:2019-09-24 07:08:46
【问题描述】:
我正在开发 E-commerce Express API,并且正在使用“sequelize”模块进行数据库操作。 现在我只有两张桌子: 而我的项目结构如下:
bin
-www
config
-database.js
models
-order.js
-user.js
routes
-user.js
.env
app.js
package.json
package-lock.json
database.js 文件:
require('dotenv').config();
const Sequelize = require('sequelize');
module.exports = new Sequelize(
process.env.DATABASE_NAME,
process.env.DATABASE_USERNAME,
process.env.DATABASE_PASSWORD, {
port: process.env.DATABASE_PORT,
host: process.env.DATABASE_HOST,
dialect: 'mysql',
}
);
User.hasMany(Order);
Order.belongsTo(User, {constraints: false});
models-user.js
const db = require('../config/database');
const Sequelize = require("sequelize");
const User = db.define('user', {
username: {
type: Sequelize.STRING(32),
unique: true,
primaryKey: true,
allowNull: false
},
email: {
type: Sequelize.STRING(254),
unique: true,
allowNull: false,
},
password: {
type: Sequelize.STRING(128),
allowNull: false,
},
/*name: {
type: Sequelize.STRING
},
isAdmin: {
type: Sequelize.BOOLEAN
},*/
}, {
freezeTableName: true,
timestamps: false,
underScored: true
});
modules.exports=User;
models-order.js
const db = require('../config/database');
const Sequelize = require('sequelize');
const Order = db.define('order', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
dateTime: {
type: Sequelize.DATE,
allowNull: false
},
totalPrice: {
type: Sequelize.INTEGER,
allowNull: false
}
}, {
freezeTableName: true,
timestamps: false,
underscored: true
}
);
module.exports=Order;
当我启动应用程序时,我得到
TypeError: User.hasMany is not a function
at Object.<anonymous> (C:\Users\danfe\Documents\GitHub\USocks_Backend\config\database.js:23:6)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (C:\Users\danfe\Documents\GitHub\USocks_Backend\models\user.js:1:74)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (C:\Users\danfe\Documents\GitHub\USocks_Backend\config\passport.js:6:14)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
我做了一些谷歌搜索,它可能与循环依赖有关?但我敢肯定,我有疑问: 1. 怎么了? 2. 我是否正确定义了关联? 3. 什么是定义关联的正确方法?
【问题讨论】:
-
使用来自
sequelize的express-example中定义的结构。 github.com/sequelize/express-example/tree/master/models这是做关联和工作的正确方式。 -
@AsgharMusani 链接不再有效,在新的仓库中我看不到任何解释关联的内容
标签: node.js express sequelize.js associations