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