我正在爲使用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輸出並不表示明顯的錯誤,所以我有點失落。爲什麼會發生這種情況?
我對節點非常陌生,所以關於如何甚至去調試這個問題或思考可能的錯誤元兇的任何想法將不勝感激!
這不能提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/18136963) – Nisarg
我已經在回調的每個分支中都有console.log語句,就像你上面看到的那樣,並且沒有任何一個被打印出來。 – MEric
看到我的編輯,我想我找到了你的問題。 – Alan