写一个基于node.js的api后台管理系统(二)

接下来我们写API输出的功能,以下是具体实现步骤:

定义API路由

在routes/tasks.js中添加以下代码:

router.get('/api', (req, res, next) => {
  Task.find((err, tasks) => {
    if (err) { return next(err); }
    res.json(tasks);
  });
});

router.get('/api/:id', (req, res, next) => {
  const id = req.params.id;
  Task.findById(id, (err, task) => {
    if (err) { return next(err); }
    res.json(task);
  });
});

以上代码创建了两个API路由:GET /api用于获取所有任务,GET /api/:id用于获取特定任务。我们使用Mongoose的查询方法获取数据库中的数据,并使用res.json方法将数据作为JSON对象返回。

将API路由添加到应用程序中

在app.js文件中添加以下代码:

app.use('/tasks', tasks);
app.use('/users', users);

app.get('/tasks/api', tasks);
app.get('/tasks/api/:id', tasks);

以上代码将/tasks/api和/tasks/api/:id路由添加到应用程序中。
现在,我们就可以使用以下URL来访问API:

  • 获取所有任务:http://localhost:3000/tasks/api
  • 获取特定任务:http://localhost:3000/tasks/api/:id

其中,:id表示特定任务的ID。

接下来我们还要写一个可视化的管理页面,以下是前端页面的实现步骤:

创建前端页面

在项目目录下创建一个名为public的文件夹,并在其中创建一个HTML文件index.html。添加以下代码:

<!DOCTYPE html>
<html>
<head>
  <title>Task Management</title>
</head>
<body>
  <h1>Task Management</h1>

  <form id="addTaskForm">
    <input type="text" name="name" placeholder="Task name">
    <input type="text" name="description" placeholder="Task description">
    <button type="submit">Add Task</button>
  </form>

  <hr>

  <table id="tasksTable">
    <thead>
      <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Description</th>
        <th>Actions</th>
      </tr>
    </thead>
    <tbody></tbody>
  </table>

  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script src="app.js"></script>
</body>
</html>

以上代码创建了一个表单,用于添加新任务,以及一个表格,用于显示所有任务。我们还引入了jQuery库和一个名为app.js的JavaScript文件。

实现前端页面功能

在public文件夹下创建一个名为app.js的JavaScript文件,添加以下代码:

$(function() {
  // 获取所有任务并显示在表格中
  $.get('/tasks/api', function(tasks) {
    for (var i = 0; i < tasks.length; i++) {
      var task = tasks[i];
      addTaskToTable(task._id, task.name, task.description);
    }
  });

  // 表单提交事件
  $('#addTaskForm').submit(function(e) {
    e.preventDefault();
    var name = $('input[name="name"]').val();
    var description = $('input[name="description"]').val();
    $.post('/tasks', { name: name, description: description }, function(task) {
      addTaskToTable(task._id, task.name, task.description);
      $('#addTaskForm')[0].reset();
    });
  });

  // 添加任务到表格中
  function addTaskToTable(id, name, description) {
    var tr = $('<tr>');
    tr.append($('<td>').text(id));
    tr.append($('<td>').text(name));
    tr.append($('<td>').text(description));
    tr.append($('<td>').html('<button class="deleteTaskButton" data-id="' + id + '">Delete</button>'));
    $('#tasksTable tbody').append(tr);
  }

  // 删除任务按钮点击事件
  $('#tasksTable').on('click', '.deleteTaskButton', function() {
    var id = $(this).data('id');
    $.ajax({
      url: '/tasks/' + id,
      type: 'DELETE',
      success: function() {
        $('#tasksTable tbody tr[data-id="' + id + '"]').remove();
      }
    });
  });
});

以上代码实现了前端页面的基本功能,包括获取所有任务并将其显示在表格中,提交表单以创建新任务,将新任务添加到表格中,以及点击“删除”按钮以删除任务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁代码

如果帮助了你,不妨也帮助我一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值