Javascript 为什么不';你不让我用Node.js和Express删除代码中的项目吗?
我目前正在学习NodeJS,我尝试制作一个应用程序,其中添加了bicileta,但它不允许我删除它们,因为删除的帖子中的消息超过了200(成功),但我发现我的模型没有被修改(304)当然,在界面中看起来,即使我点击删除按钮,它也不会删除该项目 我共享代码。/models/bicycle.jsJavascript 为什么不';你不让我用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++){
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 postryconsole.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
,就像我说的那样?我将在哪里更改它?