CRUD op Express.js Node.js Mysql 无法使用 MVC 插入

Posted

技术标签:

【中文标题】CRUD op Express.js Node.js Mysql 无法使用 MVC 插入【英文标题】:CRUD op Express.js Node.js Mysql Cannot insert using MVC 【发布时间】:2021-10-24 20:59:06 【问题描述】:

我正在尝试使用 React.js、Express.js 和 Node 来实现 CRUD 操作,所以我编写了一个基本代码并且可以正常工作,但我想使用 Model 和 Controller 来编写一个干净的代码,这样就无法正常工作并向我发送错误我不知道'不知道问题是什么,所以这里有人可以指导我让它工作。顺便说一句,Get 可以工作,但要插入编号。

我用邮递员测试它,我得到:

Error : Cannot POST /api/insert

代码如下:

Controller.js

// create new car   
exports.createNewCar = (req, res) =>
    const carReqData = new CarModel(request.body);
    console.log('carReqData', carReqData);
    // check null
    if(req.body === Object && Object.keys(req.body).length === 0)
        res.send(400).send(success: false, message: 'Please fill all fields');
    else
        CarModel.createCar(carReqData, (err, car)=>
            if(err)
            res.send(err);
            res.json(status: true, message: 'Car Created Successfully', data: car.insertId)
        )
    

Model.js

// create new car
var Car = function(car)
    this.idCars = car.idCars;
    this.carName = car.carName;
    this.carModel = car.carModel;

Car.createCar = (carReqData, result) =>
    db.query('INSERT INTO Cars SET ?', carReqData, (err, res)=>
        if(err)
            console.log('Error while inserting data');
            result(null, err);
        else
            console.log('Car created successfully');
            result(null, res)
        
    )

Routes.js

// create new car
router.post('/insert', carController.createNewCar);

Index.js

app.use('/insert', CarRoutes);

【问题讨论】:

您的 POST 路由错误正在返回前缀 '/api',因此请检查您的路由器定义,请参阅此处了解如何为路由添加前缀,这可能会给您一些需要寻找的东西:***.com/questions/68910733/… @ConBran 是的,我应该将 /api 添加到发布路线...谢谢 【参考方案1】:

我通过编辑路线解决了这个问题

Routes.js

router.post('/', carController.createNewCar);

index.js

app.use('/app/insert', CarRoutes);

【讨论】:

以上是关于CRUD op Express.js Node.js Mysql 无法使用 MVC 插入的主要内容,如果未能解决你的问题,请参考以下文章

Express.js 应用程序错误:Flash 消息未呈现

如何将参数传递给 MEAN.js 包的 express.js 服务器端路由。

Node.js + Express.js |尝试设置 HTTPS 服务器

EXPRESS.JS再出发

express js 可以做啥

Express.js- 为啥是 localhost '::'