簡體   English   中英

在express(nodejs)中自動重定向到“/ undefined”

[英]Automatic redirection to "/undefined" in express (nodejs)

我一直在研究待辦事項列表的代碼,當我實際上將 go 到自定義列表域並使用刪除方法時,問題就出現了,刪除該方法后,網站會自動重定向到“localhost:3000/undefined”並且網站無法進一步響應,所有功能都停止了,除了現有元素的顯示 這是節點 js 文件

const express=require("express");
const bodyParser=require("body-parser");
const ejs = require('ejs');
const mongoose=require("mongoose")
const app=express();

app.use(bodyParser.urlencoded({extended:true}))
app.set('view engine', 'ejs')
app.use(express.static("public"));
mongoose.connect("mongodb://localhost:27017/todolsDB");
const itemsSchema=new mongoose.Schema({
    toDoToday: String

});
const Item=mongoose.model("Item", itemsSchema);

const itemOne=new Item({
    toDoToday: "Wake Up"
});
const itemTwo=new Item({
    toDoToday: "Get up"
});
const itemThree=new Item({
    toDoToday: "Stand up"
});

const Items=[itemOne,itemTwo, itemThree];


const listSchema = {
    name: String,
    items: [itemsSchema]
  };
  
const List = mongoose.model("List", listSchema);



app.get("/", function(req, res){
    Item.find({}, function(err, Items){

    
    if (Items.length===0){
        Item.insertMany(Items, function(err){
            if(err){
                console.log(err)
            }
            else{
                console.log("Succesfully added!")
            }
        })
        res.redirect("/")
    }
    else{
        res.render("lists .ejs", {Day: "Today", newListItem: Items});
    }  
})});

app.get("/:topic", function(req, res){
    const topic=req.params.topic;
    List.findOne({name: topic}, function(err, results){
        if (!err){
            if (!results){
              const list = new List({
                name: topic,
                items: Items
              });
              list.save();
              res.redirect("/" + topic);
            }
            else{ 
          res.render("lists .ejs", {Day: results.name, newListItem: results.items});
            }
      }
    });
})
  




app.post("/",function(request, response){
    var itemName=request.body.newElement;
    const listName=request.body.list
  
    const item=new Item({
        toDoToday: itemName
    });
   
    if (listName==="Today"){
        response.redirect("/");
        item.save();
    }else{
        List.findOne({name:listName}, function(err, results){
            console.log(results)
            results.items.push(item)
            results.save()
            response.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) {
          console.log("Successfully deleted checked item.");
          res.redirect("/");
        }
      });
    } else {
      List.findOneAndUpdate({name: listName}, {$pull: {items: {_id: checkedItemId}}}, function(err, foundList){
        if (!err){
          res.redirect("/" + listName);
        }
      });
    }
  
  
  });
app.listen(3000, function(){
    console.log("connected to port 3000");
})

這是“list.ejs”文件

<%-include('header.ejs')%>
    <body>
        <div class="box" id="heading">
                <h1>Today is <%= Day %></h1> 
        </div>
             <div class="box">
                    <% newListItem.forEach(function(item){ %> 
                    <form action="/delete", method="POST">
                        <div class="item">
                    
                            <input type="checkbox" name="checkbox" value="<%=item._id%>" onchange="this.form.submit()">
                            <p><%= item.toDoToday %> </p>
                    </form>
                       
                   
                </div>
                <% }) %> 
           

        
          
          <div>
                    <form action="/" method="POST" class="item">
                    <button type="submit" name="list" value=<%= Day %> >+</button>
                    <input type="text" name="newElement" placeholder="New Element" autocomplete="off">
                    <input type="hidden" name="listName" id="" value=<%= Day %> > </input>
          </div>  
        </div>
        <%-include('footer.ejs')%>
        </form>
        <script src="" async defer></script>
    </body>
</html>

在這條路線上,你有req.body.list

app.post("/",function(request, response){
    var itemName=request.body.newElement;
    const listName=request.body.list
  
    const item=new Item({
        toDoToday: itemName
    });

在這條路線上你有req.body.listName

app.post("/delete", function(req, res){
    const checkedItemId = req.body.checkbox;
    const listName = req.body.listName;

您很可能正在嘗試訪問不存在的 object,因此請更改屬性名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM