Javascript Express自定义管线参数自动取值
这是我的js代码。每当我输入自定义地址时,chrome就会给我一个错误,说“页面无法加载”,并自动为自定义路由参数接收多个输入,然后加载最后一个输入 假设我输入localhost:3000/home,我的自定义参数名的输出如下Javascript Express自定义管线参数自动取值,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,这是我的js代码。每当我输入自定义地址时,chrome就会给我一个错误,说“页面无法加载”,并自动为自定义路由参数接收多个输入,然后加载最后一个输入 假设我输入localhost:3000/home,我的自定义参数名的输出如下 //jshint esversion:6 const express = require("express"); const bodyParser = require("body-parser"); const mongoose
//jshint esversion:6
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const _ = require("lodash");
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(express.static("public"));
mongoose.connect('mongodb+srv://admin-sonu:test123@cluster0.iglcf.mongodb.net/todolistDB', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const workItems = [];
const itemsSchema = new mongoose.Schema({
name: String
});
const Item = mongoose.model("Item", itemsSchema);
const item1 = new Item({
name: "Buy Food"
});
const item2 = new Item({
name: "Cook Food"
});
const item3 = new Item({
name: "Eat Food"
});
let defaultItems = [item1, item2, item3];
app.get("/", function(req, res) {
Item.find(function(err, items) {
if (items.length === 0) {
Item.insertMany(defaultItems, function(err) {
if (err) {
console.log(err);
} else {
console.log("Successfull");
}
});
res.render("/");
} else {
res.render("list", {
listTitle: "Today",
newListItems: items
});
}
});
});
const listsSchema = new mongoose.Schema({
name: String,
items: [itemsSchema]
});
const List = mongoose.model("List", listsSchema);
app.get("/:customListName", function(req, res) {
const customList = _.capitalize(req.params.customListName);
console.log(customList);
List.findOne({
name: customList
}, function(err, foundList) {
if (!err) {
if (foundList) {
res.render("list", {
listTitle: foundList.name,
newListItems: foundList.items
});
} else {
const list = new List({
name: customList,
items: defaultItems
});
list.save();
res.redirect("/:" + customList);
}
}else{
console.log(err);
}
});
});
app.post("/", function(req, res) {
const newItem = req.body.newItem;
const listName = req.body.list;
const item = new Item({
name: newItem
});
if (listName === "Today") {
item.save();
res.redirect("/");
} else {
List.findOne({
name: listName
}, function(err, foundList) {
foundList.items.push(item);
foundList.save();
res.redirect("/" + listName);
});
}
});
app.post("/delete", function(req, res) {
const checkedItemId = req.body.checkbox;
const listName = req.body.listName;
if (listName === "Today") {
Item.findByIdAndRemove(checkedItemId, function(err) {
if (!err) {
res.redirect("/");
}
});
} else {
List.findOneAndUpdate({
name: listName
}, {
$pull: {
items: {
_id: checkedItemId
}
}
}, function(err, foundItem) {
if (!err) {
res.redirect("/" + listName);
}
});
}
res.redirect("/");
});
// app.get("/work", function(req, res) {
// res.render("list", {
// listTitle: "Work List",
// newListItems: workItems
// });
// });
app.get("/about", function(req, res) {
res.render("about");
});
app.listen(3000, function() {
console.log("Server started on port 3000");
});
您可能希望删除此处的冒号:res.redirect(“/:”+customList)-即只执行res.redirect(“/”+customList)。您可能还希望在实际重定向用户之前等待新列表的保存,以避免出现竞争情况。谢谢!成功了。我怎么看不到这样的东西。有一件事我仍然不知道它从哪里自动获取Faveicon.ico的输入。
Home
:home
::home
:::home
::::home
:::::home
::::::home
:::::::home
::::::::home
:::::::::home
::::::::::home
:::::::::::home
::::::::::::home
:::::::::::::home
::::::::::::::home
:::::::::::::::home
::::::::::::::::home
:::::::::::::::::home
::::::::::::::::::home
:::::::::::::::::::home
:::::::::::::::::::home
Favicon.ico
:::::::::::::::::::home
Favicon.ico
Favicon.ico