在 Nodejs 中使用 Jquery Ajax 请求从数据库中删除

Deleting from Database Using Jquery Ajax Request in Nodejs

我正在做一个 Nodejs 项目,目前正在处理删除存储在数据库中的项目(食谱)的删除请求。我查看了 Google 附近的其他类似帖子,但似乎无法查明我的问题的原因。我不断收到以下错误:

而且,我不确定为什么。我认为我做错的是错误地检索了食谱 _id,但我不完全确定。此项目 repo 的 link 是:https://github.com/halsheik/RecipeWarehouse.git。下面,我粘贴了我添加的代码的相关部分(尚未上传到 repo)。如果有任何帮助,我将不胜感激。

$(document).ready(function(){
    $(".secondaryContainer").hover(function(){
        $(this).find(".deleteButton").fadeIn();        
    }, function(){
        $(this).find(".deleteButton").hide();        
    });

    $('.deleteButton').on('click', function(event){
        $target = $(event.target);
        const id = $target.attr('data-id');

        $.ajax({
            type:'DELETE',
            url: 'article/' + id,
            success: function(res){
                window.location.href='/articles/myRecipes'
            },
            error: function(err){
                console.log(err);
            }
        });
      });
});
// Delete recipe
router.delete('/:id', function(req, res){
    const query = {_id: req.params.id}
  
    Recipe.remove(query, function(err){
        if(err){
          console.log(err);
          throw err;
        }
        
        res.send('Success');
    });
  });
<%- include('../_partial/_header'); -%>
    <!-- Container for all of a user's recipes -->
    <div id="recipesContainer">
        <div id="myRecipesContainer">
            <label id="myRecipesLabel">My Recipes</label> 
    
            <!-- Button to Create a New Recipe -->
            <a href="/recipes/createRecipe" id="newRecipeButton">+ Create New Recipe</a>
        </div>
        
        <!-- Displays each individual recipe (The name and image) -->
        <div id="allRecipes">
            <% if(recipes.length > 0) { %>
                <% recipes.forEach(function(recipe){ %>
                    <% if(recipe.author == user._id){ %>
                        <div class="secondaryContainer">
                            <a href="#"><span class="deleteButton"><i class="fa fa-trash-o" data-id="<%= recipe._id %>" aria-hidden="true"></i></span></a>
                            
                            <div class="recipeContainerIndv">        
                                <a href="/recipes/<%= recipe._id %>"><img src="/uploads/<%= recipe.recipeImageFileName %>"/></a>
    
                                <a href="/recipes/<%= recipe._id %>" class="recipeTitle"> <%= recipe.recipeName %> </a>
                            </div>
                        </div>
                    <% } %>
                <% }); %>
            <% } else { %>
                <div id="noRecipesContainer">
                    <a id="noRecipes">You Currently Have No Recipes!</a>
                </div>
            <% } %>
            
        </div>
    </div>
    
<%- include('../_partial/_footer'); -%>

我无法理解以下代码的 objective:

$('.deleteButton').on('click', function(e){
        $target = $(e.target);
        const id = $target.attr('data-id');
//...

当在 deleteButton 上触发点击事件时,事件的目标只是 本身,它没有 'data-id' 属性。

这样可以得到'id':

$('.deleteButton').on('click', function(){
        const id = $(this).parent().attr('data-id');
//...