Route.delete() 需要一个回调函数,但得到一个 [object Undefined]
Posted
技术标签:
【中文标题】Route.delete() 需要一个回调函数,但得到一个 [object Undefined]【英文标题】:Route.delete() requires a callback function but got a [object Undefined] 【发布时间】:2018-06-11 07:54:39 【问题描述】:不断收到此错误,但无法弄清楚我的删除功能出了什么问题。 “Route.delete() 需要一个回调函数,但得到了一个 [object Undefined]”
const playerController =
index: (request, response) =>
Player.find()
.then(player => response.json(player))
.catch(error => console.log(error));
,
create: (request, response) =>
Player.create(request.body)
.then(player => response.json(player))
.catch(error => console.log(error));
,
delete: (request, response) =>
Player.remove(request.params.id)
.then(player => response.json(player))
.catch(error => console.log(error));
//console.log('node function');
;
//- - - - = = = = Routes = = = = - - - -
app.get('/players', playerController.index);
app.post('/players', playerController.create);
app.delete('/players/:id', playerController.destroy);
app.all("*", (request, response) => response.sendFile(path.resolve("./manager/dist/index.html")) );
【问题讨论】:
app.delete()
指向playerController.destroy
,但您没有显示playerController.destroy
的任何代码。您显示something.delete
的代码。
是的,那是我的错。我已经编辑了上面的代码以包含所有内容。
playerController.destroy
没有代码。你是不是把.delete
和.destroy
搞混了?应该是app.delete('/players/:id', playerController.delete);
?
是的,我确实搞混了。所以这让我的项目重新启动并运行,但它仍然不会真正从我的数据库中删除条目。
不确定您希望我们在这方面提供什么帮助。 Model.findByIdAndRemove()
有用吗?
【参考方案1】:
好的,总结一下,这里有两个问题:
你使用的是.playerController.destroy
,而你本应使用playerController.delete
。
要通过 id 删除您的项目,您应该使用 Player.findByIdAndRemove()
。
【讨论】:
以上是关于Route.delete() 需要一个回调函数,但得到一个 [object Undefined]的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 中的 Route::delete 没有捕获 Request $request
错误:.post() 需要回调函数,但 [object Undefined] 不起作用
错误:Route.post() 需要回调函数,但得到了 [object Object]