mongoose保存callback不起作用

我正在构build一个简单的Web应用程序的服务器,它使用MongoDB后端来存储数据。 我实例化一个新的mongoose连接使用:

mongoose.connect('mongodb://localhost:27017/callback-newsfeed-db') 

我的MongoDB输出似乎很好:

 2017-12-02T21:00:53.277-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52027 #86 (1 connection now open) 2017-12-02T21:00:53.291-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52028 #87 (2 connections now open) 2017-12-02T21:00:53.291-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52029 #88 (3 connections now open) 2017-12-02T21:00:53.292-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52030 #89 (4 connections now open) 2017-12-02T21:00:53.292-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52031 #90 (5 connections now open) 

我还定义了一个模型如下:

 const postSchema = mongoose.Schema({ api: String, source: String, title: String, upvotes: Number }) const Post = mongoose.model('Post', postSchema) 

在我的一个服务器端点中,我有以下代码:

 server.post('/posts', (request, response) => { console.log("INSIDE POSTS POST") const newapi = request.body.api const newsource = request.body.source const newtitle = request.body.title if(!newapi){ response.send(422, "MUST PROVIDE API TYPE") return }else if(!newsource){ response.send(422, "MUST PROVIDE RESOURCE SOURCE") return }else if(!newtitle){ response.send(422, "MUST PROVIDE RESOURCE TITLE") return } // Add a new post const newPost = new post.Post({ api: newapi, source: newsource, title: newtitle, upvotes: UPVOTE_DEFAULT }) console.log("ABOUT TO SAVE") // Save to DB and send to client newPost.save(error => { console.log("SAVE ERROR " ) console.log(error) if(error){ console.log("ERROR IN NEWPOST") throw error }else{ console.log("STATUS OK") response.status(STATUS_OK) response.set({'Content-type': 'application/json'}) response.send(JSON.stringify(newPost)) } console.log("SAVE HAS COMPLETED") }) console.log("AFTER NEW POST") }) 

现在,当我运行我的应用程序,我看到在控制台中的以下输出:

 INSIDE POSTS POST ABOUT TO SAVE AFTER NEW POST 

但是,由于某种原因(无论等待多久),newPost.save()callback的任何部分都不会被调用。 MongoDB输出并不表示一个明显的错误,所以我有点失落。 为什么会这样呢?

我对节点非常新,所以对如何进行debugging或考虑可能的错误肇事者的任何想法将不胜感激!

你可以设置mongoose使用ES6承诺。

  mongoose.Promise = global.Promise; mongoose.connect(process.env.MONGODB_URI); 

那么你可以使用

  newPost.save().then( () => { console.log('Everything went well'); }).catch( (e) => { console.log('There was an error', e.message); }); 
 const newPost = new post.Post({ 

应该

 const newPost = new Post({ 

事实certificate,这个问题似乎是我使用的MongoDB和mongoose之间的不兼容。 一旦我升级我的mongodb版本通过调用npm升级mongodb,保存操作似乎已经开始工作