[英]Express REST API - Delete Method
我被卡在API的delete方法上。 我的應用程序要求用戶登錄,然后他可以添加課程。 課程存儲在用戶模型內的嵌套數組中。 我希望用戶能夠從視圖中取消(刪除)課程,然后從服務器上的用戶配置文件中刪除課程。 盡管我正在比較的變量相同,但我收到了404響應事件。
這是我的ajax調用,用於刪除特定課程:
jQuery.ajax({
url: "/test/signups/5387c1a0fb06e48f4658170c",
type: "DELETE",
success: function (data, textStatus, jqXHR) {
console.log("Post resposne:");
console.dir(data);
console.log(textStatus);
console.dir(jqXHR);
}
});
這是我的刪除方法:
app.delete('/test/signups/:id', isLoggedIn, function(req, res) {
User.findOne({'_id': req.user.id }, function(err, user) {
if (err)
return done(err);
if (user) {
var found = false;
var singlesignup = user.signup.filter(function(e){ return e._id == req.params.id })[0]
user.signup.forEach(function (singlesignup, index) {
if (singlesignup._id === req.params.id) {
found = index;
}
});
if(found) {
user.signup.splice(found, 1);
res.json(200, {status: 'deleted'});
} else {
res.json(404, {status: 'invalid survey question deletion'});
}
}
});
});
mongodb中的_id
值不是字符串,它們是ObjectId
類的實例,不能與==
或===
運算符一起正常使用。 這完全是一件令人討厭的事。 但是無論如何,請嘗試在比較之前將它們轉換為字符串: singlesignup._id.toString() === req.params.id
。 從長遠來看,要使其真正正確,請確保處理所有null
, string
或ObjectId
。 考慮一個輔助庫,例如objectid 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.