问题描述
我正在创建一个 crud 应用程序,使用 nodejs sequelize express 和 xammp 作为 DB,我设法创建了一个连接并播种了一些虚拟数据。我设法创建了一个 API,但是当我尝试通过邮递员创建数据时,我收到此错误“类型错误:userDB 不是构造函数”
controller code
const userDB = require('../models/user');
//create and save new user
exports.create =(req,res)=>{
//validate request
if(!req.body){
res.status(400).send({
message:"Content can not be empty!"
});
return;
}
//create new user
const user =new userDB({
name:req.body.name,email:req.body.email,gender:req.body.gender,status:req.body.status
})
//save user in the database
user
.save(user)
.then(data=>{
res.send(data)
})
.catch(err=>{
res.status(500).send({
message:err.message ||"Something went wrong while creating new user"
});
});
}
my model
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize,DataTypes) => {
class User extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here
}
};
User.init({
name: DataTypes.STRING,email: DataTypes.STRING,gender: DataTypes.STRING,status: DataTypes.STRING
},{
sequelize,modelName: 'User',});
return User;
};
my routes
const express = require('express');
const router = express.Router();
const services = require('../services/render');
const controller = require('../../controller/controllers');
/**
* @description Root Route
* @methodGET
*/
router.get('/',services.homeRoutes)
/**
* @description Root Route
* @methodGET /add users
*/
router.get('/add-user',services.addUsers)
/**
* @description Root Route
* @methodGET /update users
*/
router.get('/update-user',services.updateUsers)
//API
router.post('/api/users',controller.create);
router.get('/api/users',controller.find);
router.put('/api/users/:id',controller.update);
router.delete('/api/users/:id',controller.delete);
module.exports = router;
解决方法
我应该改变这行控制器
const userDB = require('../models/user');
到
const userDB = require('../models/index');