Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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
Javascript Express自定义管线参数自动取值_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript Express自定义管线参数自动取值

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

这是我的js代码。每当我输入自定义地址时,chrome就会给我一个错误,说“页面无法加载”,并自动为自定义路由参数接收多个输入,然后加载最后一个输入

假设我输入localhost:3000/home,我的自定义参数名的输出如下

//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