我正在将 sequelizejs 与 expressjs 应用程序一起使用。
这是我的用户模型的代码。
用户.js
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
bio: DataTypes.STRING,
email: DataTypes.STRING,
profile_picture: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
}
}
}, {
tableName: 'users'
});
return User;
};
这是我的用户控制器
用户组件.js
const express = require( 'express' )
const router = express.Router()
const User = require( '../../models/user' )
router.get( '/user', ( req, res, next ) => {
User.findAll()
.then( userResponse => {
res.status( 200 ).json( userResponse )
} )
.catch( error => {
res.status( 400 ).send( error )
} )
} )
module.exports = router
但是当我试图获取数据时,它抛出了这个错误:
TypeError: User.findAll 不是 router.get (D:\StateBoard-Project\v2\components\user\userComponent.js:6:8) 在 Layer.handle [as handle_request] (D:\StateBoard-Project \v2\node_modules\express\lib\router\layer.js:95:5) 在下一个 (D:\StateBoard-Project\v2\node_modules\express\lib\router\route.js:137:13) 在 Route。在 Layer.handle [as handle_request] (D:\StateBoard-Project\v2\node_modules\express\lib \router\layer.js:95:5) 在 D:\StateBoard-Project\v2\node_modules\express\lib\router\index.js:281:22 在 Function.process_params (D:\StateBoard-Project\v2\ node_modules\express\lib\router\index.js:335:12) 在下一个 (D:\StateBoard-Project\v2\node_modules\express\lib\router\index.js:275:10) 在 Function.handle (D :\StateBoard-Project\v2\node_modules\express\lib\router\index.js:174:3) 在路由器 (D:\StateBoard-Project\v2\node_modules\express\lib\router\index.js:47: 12)
这是由 Sequelize 自动生成的 model/index.js 文件。
const fs = require( 'fs' )
const path = require( 'path' )
const Sequelize = require( 'sequelize' )
const basename = path.basename( module.filename )
const env = process.env.NODE_ENV || 'development'
const config = require( __dirname + '/..\database.json' )[env]
const db = {}
let sequelize
if (config.use_env_variable) {
sequelize = new Sequelize( process.env[ config.use_env_variable ] )
} else {
sequelize = new Sequelize( config.database, config.username, config.password, config )
}
fs
.readdirSync( __dirname )
.filter( function( file ) {
return ( file.indexOf( '.' ) !== 0 ) && ( file !== basename ) && ( file.slice( -3 ) === '.js' )
} )
.forEach( function( file ) {
var model = sequelize[ 'import' ]( path.join( __dirname, file ) )
db[ model.name ] = model
});
Object.keys( db ).forEach( function( modelName ) {
if ( db[ modelName ].associate ) {
db[ modelName ].associate( db )
}
});
db.sequelize = sequelize
db.Sequelize = Sequelize
module.exports = db
这里缺少什么?
原文由 rakibtg 发布,翻译遵循 CC BY-SA 4.0 许可协议
你应该在你要使用模型的地方需要 models/index.js,而不是 models/user.js。