我有一個運行express的服務器端框架的節點。用mongoose加載並保存mongodb中的文檔
我創建了以下端點:
app.post('/post/save', auth.auth, function (req, res) {
Post.findById(req.body._id, function (err, post) {
post = post || new Post();
post.author.name = req.user.getName();
post.author.id = req.user._id;
post.title = req.body.title;
post.body = req.body.body;
post.save(function (err, object) {
err && res.send(500);
res.status(200).send({ /*id: object._id*/ });
});
});
});
當我把這個第一次,它的工作原理。 當我第二次打電話時,它失敗。該請求只是保持掛起狀態,並且從save函數調用返回的對象是未定義的。
req.body._id
是undefined
在這兩個請求中。我嘗試連續創建2個新帖子。
我想要做的是檢查一個文檔是否存在,是否存在,更新它然後保存它,或者創建一個新文檔。
我知道像upsert這樣的東西存在,但我不能使用它,因爲我需要預保存中間件來觸發,並且它只在.save
之前觸發。
任何人都可以看到錯誤嗎?
你可以做'console.dir(err);'? – Barno 2014-11-24 13:35:11
我有一個E11000重複鍵錯誤索引錯誤,可能是因爲我已經在模型中設置了一個獨特的字段,然後將它評論出來。我認爲如果我刪除了代碼,它就會消失。 – ptf 2014-11-24 14:11:19
可能是您第一次將'post.author.id'創建爲'undefined',並且第二次嘗試使用'undefined'創建另一個帖子時。但是'undefined'已經被使用 – Barno 2014-11-24 14:15:44