gpt4 book ai didi

javascript - 创建新事件时尝试将事件 ID 保存给创建它的用户...错误

转载 作者:行者123 更新时间:2023-12-03 05:33:21 24 4
gpt4 key购买 nike

我有一个处理事件的应用程序。用户需要登录才能创建事件,当他们创建事件时,我需要将事件 ID 添加到 user.events 数组中。然而,我在向用户保存事件时遇到了困难,这是主要问题。我在创建事件后重定向到的“事件” route 获取其他数据。

router.post("/event",  isLoggedIn, function (req,res){
// get data from form and add to events array
var title = req.body.title;
var date = req.body.date;
var description = req.body.description;
var venue = req.body.venue;
var photo = req.body.photo;
var category = req.body.category;
//get user data to save to the event.
var owner = {
id: req.user._id,
username: req.user.username
}
var newEvent = {category: category, title: title, date: date, description: description, venue: venue, photos:{link: photo,date: date}, owner: owner};
Event.create(newEvent, function(err, event){
if(err){
console.log(err)
} else {
//This takes the event owner ID and saves it into the Event model
//event.owner.id = req.user._id;
//This takes the event username and saves it into the Event model
event.owner.username = req.user.username;
event.save();
//console.log(event);
//Save the event ID in the user document
User.update({_id: event.owner.id}, function(err,savedData){
savedData.events = {eventId: event._id};
savedData.save();

})
//Add the Event ID to the User model
console.log (owner);
}
});
res.redirect('events');

})

在我的模型中,我将 User.events 作为数组,我不确定这是否是一个问题,但我得到的错误是在重定向到“events”时,它告诉我 events.forEach 不是一个函数。

这是模板中产生错误的行:

 <% events.forEach(function(events){ %>

这是“事件”路线:

router.get("/events",  isLoggedIn, function(req,res){
User.findById(req.user._id).populate("moments").populate("events").exec(function(err,allEvents){
console.log("The id of the user " + req.user._id)
console.log("User ID: " + req.user._id)
if(err){
console.log(err);
console.log("Ummm.... the database may be down?.......")
} else {
// if (allEvents === null){
// res.redirect("/dashboard");
// console.log("nothing in AllEvents");
// console.log(allEvents);
// } else {
console.log("Below are all the events pulled");
//console.log(allEvents)
res.render("eventsList", {events: allEvents});
// }
}
})
});

最佳答案

allEvents 是一个普通对象,而不是一个 Array,因此 forEach() 和其他与 Array 相关的方法不可用。

如果您想迭代对象的属性,您可以使用 Objects.keys(allEvents).forEach(function(key) { 并使用 allEvents[key] 获取每个键的值。否则,只需完全删除 events.forEach(function(events){ (以及关联的 })。

关于javascript - 创建新事件时尝试将事件 ID 保存给创建它的用户...错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40836645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com