【问题标题】:Route.delete() requires a callback function but got a [object Undefined]Route.delete() 需要一个回调函数,但得到一个 [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() 有用吗?

标签: javascript angularjs node.js mongoose mean-stack


【解决方案1】:

好的,总结一下,这里有两个问题:

  1. 你使用的是.playerController.destroy,而你本应使用playerController.delete

  2. 要通过 id 删除您的项目,您应该使用 Player.findByIdAndRemove()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-08
    • 2020-06-29
    • 2021-03-31
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多