Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Node.js RESTful routes,如何在编辑内容后更改其颜色?_Node.js_Mongodb_Rest_Html Table_Crud - Fatal编程技术网

使用Node.js RESTful routes,如何在编辑内容后更改其颜色?

使用Node.js RESTful routes,如何在编辑内容后更改其颜色?,node.js,mongodb,rest,html-table,crud,Node.js,Mongodb,Rest,Html Table,Crud,我对RESTful路由和CRUD有点陌生,所以我不知道该怎么做,或者最好的方法是什么。我有一个HTML表,其中填充了来自名为environments的MongoDB集合的数据。通过使用forEach循环集合来填充该表。编辑条目时(1条条目=表的1行),我使用表单使用PUT方法并以这种方式更新数据 我希望能够通过在更新后将背景颜色更改为黄色(有点像高亮显示)来指示何时更新了某些内容。我在想,我可以在每个表单输入旁边添加一个复选框或其他东西,用户在编辑某些内容时可以检查这些内容,然后表格单元格的背景

我对RESTful路由和CRUD有点陌生,所以我不知道该怎么做,或者最好的方法是什么。我有一个HTML表,其中填充了来自名为environments的MongoDB集合的数据。通过使用
forEach
循环集合来填充该表。编辑条目时(1条条目=表的1行),我使用表单使用PUT方法并以这种方式更新数据

我希望能够通过在更新后将背景颜色更改为黄色(有点像高亮显示)来指示何时更新了某些内容。我在想,我可以在每个表单输入旁边添加一个复选框或其他东西,用户在编辑某些内容时可以检查这些内容,然后表格单元格的背景颜色将根据是否选中该复选框而改变……但我不知道如何使用这样的路由:(

我已经包含了我认为必要的内容,但如果您想看到更多代码,请让我知道:

app.js路线:

var express = require("express"),
    app = express(),
    mongoose = require("mongoose"),
    bodyParser = require("body-parser"),
    methodOverride = require("method-override");

mongoose.connect("mongodb://localhost:27017/epims", {
 useNewUrlParser: true,
 useUnifiedTopology: true
});

app.use(methodOverride("_method"));
app.use(bodyParser.urlencoded({ extended: true }));
app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));

//EDIT ENVIRONMENT ROUTE
  app.get("/environments/:id/edit", function(req, res){
      Environment.findById(req.params.id, function(err, foundEnvironment){
          if(err){
              res.redirect("/");
          } else {
              res.render("edit", {environment: foundEnvironment});
          }
      });
  });

//UPDATE ENVIRONMENT ROUTE
app.put("/environments/:id", function(req, res){
  Environment.findByIdAndUpdate(req.params.id, req.body.environment, function(err, updatedEnvironment){
    if (err) {
      res.redirect("/environments");
    } else {
      res.redirect("/environments/" + req.params.id);
    }
  });
});
html表格:

  <table class="environment">
    <tr>
      <th colspan=2>ePIMS</th>
      <th colspan=2>Region</th>
      <th colspan=2>HCHC</th>
      <th colspan=2>Membership</th>
    </tr>
    <% environments.forEach(function(environment){ %>
      <tr>
        <td class="td"><%= environment.ePIMS %></td>
        <td class="td"><%= environment.region %></td>
        <td class="td"><%= environment.HCHC %></td>
        <td class="td"><%= environment.membership %></td>
    <% }); %> 
      </tr>
  </table>

埃皮姆斯
区域
六氯环己烷
会员
编辑表格:

    <form action="/environments/<%= environment._id %>?_method=PUT" method="POST">
        <input class="form-control" type="text" name="environment[ePIMS]" placeholder="ePIMS" value="<%= environment.ePIMS %>" />
        <input class="form-control" type="text" name="environment[region]" placeholder="Region" value="<%= environment.region %>" />
        <input class="form-control" type="text" name="environment[HCHC]" placeholder="HCHC Instance" value="<%= environment.HCHC %>" />
        <input class="form-control" type="text" name="environment[membership]" placeholder="Membership"  value="<%= environment.membership %>" />
        <button class="btn btn-primary">Submit</button>
    </form>

提交

您可以在后端执行以下操作:

后端:


//我在这里使用箭头函数使代码看起来更干净
app.get('/environments/:id/edit',(req,res)=>{
//我在这里使用promise使代码看起来更干净
Environment.findById(请求参数id)
。然后(结果=>{
res.render(“编辑”{
环境:环境,,
//也许颜色可以在这里
这里的颜色:“黄色”
});
//如果有错误,将在此处捕获。不再需要if(err)
})
.catch(err=>res.redirect(“/”);
});
前端:


//我大部分时间都用把手,我不是
//确定ejs语法。但它应该是
//像这样的
这是一个蓝色标题

颜色更改是否会持续?@AvivLo是的,我希望它持续并仅在用户选择您使用的模板引擎时才进行更改?是否有选项为前端的HTML表着色?如果是,我们可以从后端发送颜色名称,模板引擎将使用该名称进行替换,让比如说,前端将应用一个名为color的CSS属性。@AvivLo我正在使用ejs。我想做类似的事情,但我从来没有做过这样的事情,所以我不确定从哪里开始。我将在答案中发布潜在的解决方案。嗯,好的,我知道你要做什么了。我不认为这个确切的方法是可行的ble用于传递数据,但我有点更好的想法,我可以选择哪个方向。谢谢!!不客气。顺便说一句,也许可以使用
var
,现在就开始使用
let
const