首页 > 解决方案 > Model.save() 被窃听?

问题描述

我正在尝试通过需要提交名称并将其保存到集合的 freecodecamp 测试。但是,每次我在表单中按下提交时,控制台中都会出现一条冗长的警告消息:

(node:20679) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html

这是我的路线代码:

app.post('/api/exercise/new-user/', (req, res) => {
  const {username} = req.body;
  if(username===''){
    res.send('Name must not empty');
  }else{
    const aNewTrainee = new PersonExcer({name:username});
    aNewTrainee.save().then(aTrainee => {
            res.status(200).json(aTrainee);
        })
        .catch(err => {
            res.status(400).send('adding new todo failed');
        });
  }  
})

而且因为如果我在保存后尝试查询文档集合,没有结果,那只能意味着save()调用不起作用:

//This has no result
app.get('/api/exercise/users', (req, res)=>{
  PersonExcer.find(function(err, docs) {
    if (err) {
            console.log(err);
        } else {
            res.json(docs);
        }
  });
  //This has no result
})

请在此处查看完整的代码(编辑:链接已删除)。

标签: node.jsmongodbexpress

解决方案


我一直在尝试您的代码,它工作正常,请将您的猫鼬更新/升级到最新版本。

您可以使用下面的命令行来检查哪些软件包有更新的版本可用:

npm outdate

对于upgrade您的猫鼬,您可以使用以下命令行:

npm install mongoose@latest --save

对于update,您可以使用以下命令行:

npm update mongoose

我希望它可以帮助你。


推荐阅读