簡體   English   中英

Express REST API-刪除方法

[英]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 從長遠來看,要使其真正正確,請確保處理所有nullstringObjectId 考慮一個輔助庫,例如objectid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM