繁体   English   中英

如何使用Jade模板从Redis数据库中删除html列表项?

[英]How do I delete an html list item from Redis database using Jade template?

我有一个非常简单的待办事项列表应用程序(使用下面的注释中的教程),使用node.js,express和jade制作。 该应用程序可以正常工作,因此我可以将项目添加到列表中,并将其ID等于列表项目的名称保存到redis数据库中。

现在如何编辑我的翡翠模板,使删除按钮显示在列表项旁边,当我单击它时,该项目将从数据库中删除?

以下是相关代码:

Routes.js文件

exports.index = function(req, res){
  res.render('index', { title: 'Welcome to JSPlayground Todo' });
};

var redis = require("redis"),
  client = redis.createClient();

exports.todo = function(req, res){ //Pulls items from database to display on page
  var todos = [];
  client.hgetall("Todo", function(err, objs) {
    for(var k in objs) {
      var newTodo = {
        text: objs[k]
      };
      todos.push(newTodo);
    }
    res.render('todo', {
      title: 'New Todo List',
      todos: todos
    });
  });
};

exports.saveTodo = function(req, res) { //Saves a list item from input box to database
  var newTodo = {};
  newTodo.name = req.body['todo-text'];
  newTodo.id = newTodo.name.replace(/ /g, '');
  //console.log(newTodo.id);
  //console.log(newTodo.name);
  client.hset("Todo", newTodo.id, newTodo.name);
  res.redirect("back");
};

todo.jade文件

h1 new todo list
form(action="/save", method="post")
  p
    label Enter a new todo item
    input(type='text',placeholder='new todo', name='todo-text')
  p
    input(type='submit', value='Save')
ul
  each todo in todos
    li #{todo.text} 

如果我在模板页面上创建链接

a(href="/del") del

并将/ del路由到routes.js文件中的此函数

exports.delTodo = function(req, res) {
  var delTodo = {};
  delTodo.id = "Test";
  client.hdel("Todo", delTodo.id);
  res.redirect("back");
};

它将删除ID为“ Test”的单个列表项。 但是我不确定如何删除它所单击的特定列表项。

更改

a(href="/del") del

a(href="/del/#{todo.id}") del

确保已启用快速正文解析器。

app.user(express.bodyParser());

然后如下修改路线

app.routes('/del/:todo_id', delTodo);

然后在routes.js中按以下方式进行访问。

exports.delTodo = function(req, res) {
  var delTodoId = req.params.todo_id;
  client.hdel("Todo", delTodoId);
  res.redirect("back");
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM