#node.js #mongodb #express
#node.js #mongodb #выразить
Вопрос:
Я продолжаю получать, и эта ошибка выдает er; // Необработанное событие ‘error’ ^
Ошибка типа: не удается прочитать свойство ‘items’ с нулевым значением
когда я запускаю свой код с помощью express с node, пытающимся запустить мой todolist, и эта ошибка продолжает появляться, не позволяя мне добавлять какие-либо новые элементы в пользовательский todolist, и проблема в соответствии с терминалом заключается в том, что именно в этой строке кода
**else {
List.findOne({Name: listName},function(err, foundList){
foundList.items.push(item);
foundList.save();
res.redirect("/" listName)
const itemsSchema = {
Name:String
}**
И вот весь код
const Item = mongoose.model("Item",itemsSchema)
const item1 = new Item({
Name:"Welcome to your todolist!"
});
const item2 = new Item({
Name:"Hit the button to add new items"
});
const item3 = new Item({
Name:"Example: I have to study X today"
});
const defaultItems = [item1,item2,item3];
const listSchema = {
Name:String,
items:[itemsSchema]
};
const List = mongoose.model("List", listSchema);
app.get("/", function(req, res) {
Item.find({},function(err,foundItems){
if(foundItems.length===0){
Item.insertMany(defaultItems,function(err){
if(err){
console.log(err)
}else {
console.log("Items saved successfully")
}
})
res.redirect("/");
}else {
res.render("list", {listTitle: "Today", newListItems: foundItems});
}
});
});
app.get("/:customListName",function(req,res){
const customListName = req.params.customListName;
List.findOne({Name:customListName}, function(err,foundList){
if(!err){
if(!foundList){
const list = new List({
Name: customListName,
items: defaultItems
});
list.save();
res.redirect("/" customListName);
} else {
res.render("list", {listTitle: foundList.Name, newListItems: foundList.items})
}
}
})
});
app.post("/", function(req, res){
const itemName = req.body.newItem;
const listName = req.body.list;
const item = new Item({
Name:itemName
});
if(listName==="Today"){
item.save();
res.redirect("/");
}else {
List.findOne({Name: listName},function(err, foundList){
foundList.items.push(item);
foundList.save();
res.redirect("/" listName)
})
}
});
Ответ №1:
Ошибка заключается в том, что объект, к которому вы пытаетесь получить доступ с .item
, в данном случае не определен foundList
else {
List.findOne({Name: listName},function(err, foundList){
if(!err amp;amp; foundList) {
foundList.items.push(item);
foundList.save();
res.redirect("/" listName)
} else return (err ? res.status(500).json(err.message) : res.status(404).json("List not found"); // or however you want to handle errors
})
}
Вы должны проверить, определен ли foundList
и существует ли ошибка внутри этого обратного вызова, прежде чем использовать этот объект.