当前位置: 首页 > 知识库问答 >
问题:

如何在删除后重新呈现活动服务器上的数据-node/express

谭玄天
2023-03-14

我有一个活动服务器正在运行,我正在尝试执行自动更新数据的delete请求。在前端,我有代码捕获活动对象信息,然后为我的JSON发送delete请求然后发送get请求,以便它可以重新呈现数据。我很难弄清楚为什么我必须刷新我的网页以显示项目已被删除。

router.delete('/notes/:id', (req, res) => {
    // Convert the searched id to a number
    const id = Number(req.params.id);
    // See if the id exists in the array
    const deleted = notes.find(notes => notes.id === id);
    // If it does exist
    if(deleted){
        // Filter for all that don't match the id
        const notesArray = notes.filter(notes => notes.id !== id);
        // Rewrite the json file
        fs.writeFileSync(
            path.join(__dirname, '../../db/db.json'),
            JSON.stringify(notesArray, null, 2)
        );
        // Send success
        res.send(200);
    } else {
        res.status(404).send(`Note you're looking for does not exist.`)
    }
})

编辑:添加前端代码以辅助

获取请求

    router.get('/notes', (req, res) => {
        // When user requests the notes
        // Send the notes in a json format
        res.status(200).json(notes);
    })

前端代码

  deleteNote(note.id).then(function() {
    getAndRenderNotes();
    renderActiveNote();
  });

    // Gets notes from the db and renders them to the sidebar
    var getAndRenderNotes = function() {
      return getNotes().then(function(data) {
        renderNoteList(data);
      });
    };

    var getNotes = function() {
      return $.ajax({
        url: "/api/notes",
        method: "GET"
      });
    };

    // Render's the list of note titles
    var renderNoteList = function(notes) {
      $noteList.empty();
    
      var noteListItems = [];
    
      for (var i = 0; i < notes.length; i++) {
        var note = notes[i];
    
        var $li = $("<li class='list-group-item'>").data(note);
        var $span = $("<span>").text(note.title);
        var $delBtn = $(
          "<i class='fas fa-trash-alt float-right text-danger delete-note'>"
        );
    
        $li.append($span, $delBtn);
        noteListItems.push($li);
      }
    
      $noteList.append(noteListItems);
    };

共有1个答案

东门俊民
2023-03-14

每当GET请求完成时,我的服务器返回一个304-Not modified。修改了代码,以便一旦发生delete请求,我就会查找如果删除的项存在于我的数组中,如果存在,我就会重新声明我的notes变量作为筛选的数组。然后,我使用过滤后的数组重写JSON文件。

router.delete('/notes/:id', (req, res) => {
    // Convert the searched id to a number
    const id = Number(req.params.id);
    // See if the number exists in the array
    const deleted = notes.find(notes => notes.id === id);
    // If it does exist
    if(deleted){
        // Filter for all that don't match the id
        notes = notes.filter(notes => notes.id !== id);
        // Rewrite the json file
        fs.writeFileSync(
            path.join(__dirname, '../../db/db.json'),
            JSON.stringify(notes, null, 2)
        );
        // Send new notes file
        res.status(200).send('Success');
    } else {
        res.status(404).send(`Note you're looking for does not exist.`)
    }
})
 类似资料:
  • 在我的Spigot/Bukkit Minecraft服务器插件中,我试图删除一个世界的数据目录,但在卸载世界及其区块后,一些文件和目录仍然无法删除。 这是我代码的重要部分: 服务器管理器。deleteDirectory(文件)利用Apache的FileUtils。deletequiely(File)并可用于其他功能,但无法删除最近卸载的世界的数据目录中的某些文件,很可能是因为服务器仍在使用某些文件

  • 问题内容: 我有使用Express和Connect中间件的功能齐全的用户注册/身份验证系统。 唯一的问题是,每次执行服务器重新启动时,会话都会中断。 https://github.com/remy/nodemon-并且nodemon每次检测到文件更改时都会重新启动node.js。 如何进行持续性会话? 问题答案: 就像您的代码告诉您正在使用MemoryStore一样。这是易失的,重启后会清除。我建

  • 问题内容: 有没有一种方法可以硬链接包含多个Git存储库的文件夹中的所有重复对象? 说明: 我在公司服务器(Linux计算机)上托管了一个Git服务器。这个想法是拥有一个主规范存储库,每个用户都没有推送访问权限,但是每个用户都派生规范存储库(将规范存储库克隆到用户的主目录,从而实际上创建硬链接)。 / canonical / Repo / Dev1 / Repo(最初克隆时硬链接到/ canoni

  • 问题内容: 我认为我在概念上使用React.js在服务器端渲染中缺少一些东西 假设我想创建一个页面来显示服务器端数据库中的项目,并使用输入字段对其进行过滤。 我想要一个页面: 响应类似的URL 带有React输入字段以按名称过滤项目 与React组件一起显示已过滤项目的列表 假设我有一个公共的REST API来查询客户端上的项目。 从概念上讲,我首先要执行的操作()是: 我希望输入字段显示用户作为

  • 问题内容: 我试图让fullCalendar反映通过AJAX对数据库所做的更改。问题是在成功进行AJAX调用后,它不会更新屏幕上的日历。 我使用了错误的方法?无需重新加载整个页面的最佳方法是什么?感谢您的输入! 问题答案: 有几种方法。一些不太优雅。 1.如果您使用FullCalendar捕获json事件: 做就是了: 如果希望外部方法获取事件,则可以执行。不优雅但是可以用

  • 在每个服务器上创建x会话后,我有2个不同的tomcat服务器(不同的机器),当我重新启动两个服务器时,其中一个保留会话,而另一个没有, -知道为什么吗?-我想和两只雄猫保持通话 谢谢

  • 我有三节课 1.菜单活动 2.LocationUpdateService 3.多重标记器 1.菜单活动 2、LocationUpdateService:(这是服务类) 3、多重标记(活动) 我的问题是:当我打开我的菜单活动我的Toast消息打印发送数据到广播接收器,然后点击按钮我调用MultipleMarker。我无法从服务中获取值。。。但当我按下后退按钮时,我重定向到MenuActivity,此

  • 本文向大家介绍pgsql 如何删除仍有活动链接的数据库,包括了pgsql 如何删除仍有活动链接的数据库的使用技巧和注意事项,需要的朋友参考一下 删除数据库的命令: 但是这个命令可能会报错: 类似于: 如: 表示要删除的数据库上还有其他活动链接。 解决方法: 断开该数据库上所有链接。 sql: 其中: pg_terminate_backend用来终止与数据库的连接的进程id的函数。 pg_stat_