猫鼬保存回调不起作用
我正在为使用MongoDB后端存储数据的简单Web应用程序构建服务器。我实例使用新的猫鼬连接:猫鼬保存回调不起作用
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()回调以往似乎的一部分打电话。 MongoDB输出并不表示明显的错误,所以我有点失落。为什么会发生这种情况?
我对节点非常陌生,所以关于如何甚至去调试这个问题或思考可能的错误元凶的任何想法将不胜感激!
回答:
const newPost = new post.Post({
应该
const newPost = new Post({
回答:
您可以设置猫鼬使用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);
});
回答:
原来,这个问题似乎一直的MongoDB和版本我是用猫鼬之间的不兼容。一旦我通过调用npm升级mongodb来升级我的mongodb版本,保存操作似乎已开始工作
以上是 猫鼬保存回调不起作用 的全部内容, 来源链接: utcz.com/qa/259571.html