Javascript 为什么不';你不让我用Node.js和Express删除代码中的项目吗?

Javascript 为什么不';你不让我用Node.js和Express删除代码中的项目吗?,javascript,node.js,Javascript,Node.js,我目前正在学习NodeJS,我尝试制作一个应用程序,其中添加了bicileta,但它不允许我删除它们,因为删除的帖子中的消息超过了200(成功),但我发现我的模型没有被修改(304)当然,在界面中看起来,即使我点击删除按钮,它也不会删除该项目 我共享代码。/models/bicycle.js Bicicleta.removeById = function(aBiciId){ for(var i = 0; i < Bicicleta.allBicis.length; i++){

我目前正在学习NodeJS,我尝试制作一个应用程序,其中添加了bicileta,但它不允许我删除它们,因为删除的帖子中的消息超过了200(成功),但我发现我的模型没有被修改(304)当然,在界面中看起来,即使我点击删除按钮,它也不会删除该项目

我共享代码。/models/bicycle.js

Bicicleta.removeById = function(aBiciId){
    for(var i = 0; i < Bicicleta.allBicis.length; i++){
        if(Bicicleta.allBicis[i].id == aBiciId){
            Bicicleta.allBicis.splice(i, 1);
            break;
        }

    }
}
module.exports = Bicicleta;
  bicicleta_delete_post = function(req, res){
     Bicicleta.removeById(req.body.id);

     res.redirect('/bicicletas');
var express = require('express');
var router = express.Router();
var bicicletaController = require('../controllers/bicicleta');

router.post('/:id/delete', bicicletaController.bicicleta_delete_post);

module.exports = router;
/routes/bicileta.js

Bicicleta.removeById = function(aBiciId){
    for(var i = 0; i < Bicicleta.allBicis.length; i++){
        if(Bicicleta.allBicis[i].id == aBiciId){
            Bicicleta.allBicis.splice(i, 1);
            break;
        }

    }
}
module.exports = Bicicleta;
  bicicleta_delete_post = function(req, res){
     Bicicleta.removeById(req.body.id);

     res.redirect('/bicicletas');
var express = require('express');
var router = express.Router();
var bicicletaController = require('../controllers/bicicleta');

router.post('/:id/delete', bicicletaController.bicicleta_delete_post);

module.exports = router;

使用路由参数,如
router.post('/:id/delete',biciletacontroller.bicileta_delete_post)将以
id
req.params.id
中结束,而不是在
req.body.id
中结束

这意味着您实际上执行了
removeById(未定义)
,但它不执行任何操作

我建议(除了将
req.body
更改为
req.params
)如果无法删除任何内容,也让删除函数抛出错误:

Bicicleta.removeById = function(aBiciId) {
  for (var i = 0; i < Bicicleta.allBicis.length; i++) {
    if (Bicicleta.allBicis[i].id == aBiciId) {
      return Bicicleta.allBicis.splice(i, 1);  // return deleted object
    }
  }
  throw new Error(`No Bicicleta to delete with id ${aBiciId}`);
};

bicileta.removeById=函数(aBiciId){
对于(变量i=0;i
您能否尝试将
导出.bicileta\u删除\u发布
函数的内容更改为
arr.splice(aBiciId,1)
并可以将
控制台.log(aBiciId)放入
在您的模型的
removeById
中,并显示它的输出?@KarmaBlackshaw我应该先放置removeById函数的console.log,然后再更改导出的内容。bicileta\u delete\u postry
console.log(aBiciId)
。我将只检查ID是否确实存在。如果我将控制台放在bicileta.allBicis.splice(I,1)的后面;console.log结果未定义。如果我把它放在前面,不要显示日志有人编辑了我的问题,并删除了app.js代码,我只是在app.js的第29行得到了一个错误:找不到404 NotFoundError:找不到D:\node red bicycles\app.js:29:8,这是行:app.use(function(req,res,next){next(createError(404));console.log('You make a error');});我抛出这个错误来测试您的建议:错误:没有id未定义的要删除的Bicicleta。您还将
req.body.id
更改为
req.params.id
,就像我说的那样?我将在哪里更改它?