使用 mongoldb、mongoose、jade 和 express 通过按钮单击删除条目

Posted

技术标签:

【中文标题】使用 mongoldb、mongoose、jade 和 express 通过按钮单击删除条目【英文标题】:Deleting an entry through a button click using mongoldb, mongoose, jade and express 【发布时间】:2016-07-27 19:16:56 【问题描述】:

所以我无法弄清楚如何通过单击视图中的按钮来删除数据库中的条目。逻辑对我来说没有意义。我的观点是这样的:

如何让每个按钮连接到每个条目?我将在下面列出我的视图和路线代码,以便您浏览它。

翡翠

  extends ../userLayout
block localStyles
    link(rel='stylesheet', href='/stylesheets/usersPage/users.css')
block content
    .container
        .users.col-md-11.col-xs-12.table-responsive 
            h1 Current Users
            form.form(method="post" action="/users/view")
                table.col-xs-12
                    tr
                        th Name
                        th Username
                        th
                    each user in users 
                        tr
                            td= user.name
                            td= user.username
                            td  
                                button.btn.btn-danger.col-xs-12 X

用户路线

  router.post('/view', function(req, res, next) 

//***potential delete code

      userSchema.remove( name: 'reg' , function (err) 
          if (err) return handleError(err);
          // removed!      

            );

    );

就像我说的那样,我的大问题只是让按钮删除某个条目背后的逻辑。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

执行此操作的一种方法是在每个按钮中设置要删除的文档的 ID。

//jade
td
   button.remove-doc.btn.btn-danger.col-xs-12(data-id="#user.id)") X

并添加一个事件监听器来发送一个ajax请求来删除用户:

<script>
   $('buttons.remove.doc').on('click', function() 
      var userId = $(this).attr('data-id');
      $.ajax(
         method: "POST",
         url: "/users/delete",
         data: "userId": userId,
         success: function(result) 
            if(/* check if it is ok */) 
                location.reload();
            
         
      )
   );
</script>

在节点中你会得到这样的东西:

app.post('/users/delete', function(req, res, next) 
   var userId = req.body.userId || req.query.userId;

   userSchema.remove(_id: userId, function(err, res) 
       if (err)  res.json("err": err);  else  res.json(success: true);
   );
);

【讨论】:

以上是关于使用 mongoldb、mongoose、jade 和 express 通过按钮单击删除条目的主要内容,如果未能解决你的问题,请参考以下文章

Express JS、Mongoose JS 和 Jade 中的 Textarea 换行符

比较 Mongoose 对象 ID 时,if 语句在 Jade 中不起作用

[js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist

NodeJS学习历程 - 工具篇

循环通过node / jade中的类似键