Express 将id从URL保存到USER.REQ,而不刷新页面
我一直在努力创建一个露营地快速评级应用程序。到目前为止,一切看起来都很好。我在添加营地、删除营地、添加评论、身份验证等方面拥有完整的CRUD功能 我正在使用ejs模板显示来自MongoDB的不同营地 这就是问题所在。我想添加一个AddtoFavorite按钮,将当前露营id(在de URL中找到)推送到当前用户(req.user),而不刷新页面。我通过一个普通的express请求刷新页面,以正常的方式做到了这一点:Express 将id从URL保存到USER.REQ,而不刷新页面,express,fetch,ejs,Express,Fetch,Ejs,我一直在努力创建一个露营地快速评级应用程序。到目前为止,一切看起来都很好。我在添加营地、删除营地、添加评论、身份验证等方面拥有完整的CRUD功能 我正在使用ejs模板显示来自MongoDB的不同营地 这就是问题所在。我想添加一个AddtoFavorite按钮,将当前露营id(在de URL中找到)推送到当前用户(req.user),而不刷新页面。我通过一个普通的express请求刷新页面,以正常的方式做到了这一点: app.post("/home/:id/favorites"
app.post("/home/:id/favorites", async (req, res) => {
const campground = await Campground.findById(req.params.id);
const user = await User.findById(req.user.id);
;
const campgroundstring = JSON.stringify(campground.id);
console.log("CAMPGROUNDID=" +campgroundstring)
if (!user.favorites.includes(campground.id)){
user.favorites.push(campground.id);
user.save();
console.log("campground added");
}
else{
var index = user.favorites.indexOf(campground.id);
console.log(index)
await user.favorites.splice(index, 1);
await user.save();
console.log("this campground is deleted from favorites")
}
res.redirect(`/home/${campground.id}`)
console.log("REQ>USER>FAVORITES= " + user.favorites[0] + " " + user.favorites[1]);
}
)
我知道,如果您想更新数据库中的数据,您需要AJAX。我尝试使用Fetch(),但我似乎不明白如何使用Fetch从JS文件中的URL提取camping.id,然后将主体数据发布到我的express API(我如何为此创建适当的API?),然后在不刷新页面的情况下将其保存到数据库中的我的req.user。这可能吗
我似乎不知道如何让express、ejs和fetch()以这种方式协同工作。这真的很令人沮丧,我真的非常渴望得到帮助。如果我的问题足够清楚,请告诉我。非常感谢你的帮助
谢谢,
罗兰营地里有名为
id
的数据吗?我想如果find
查询与任何文档匹配,将返回\u id
而不是id
营地中是否有名为id
的数据?我认为如果find
查询与任何文档匹配,将返回\u id
而不是id