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]

回调函数

错误:Route.get() 需要回调函数,但在 app.js 中获得了 [object Undefined]

js中的回调函数