Express 将id从URL保存到USER.REQ,而不刷新页面

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"

我一直在努力创建一个露营地快速评级应用程序。到目前为止,一切看起来都很好。我在添加营地、删除营地、添加评论、身份验证等方面拥有完整的CRUD功能

我正在使用ejs模板显示来自MongoDB的不同营地

这就是问题所在。我想添加一个AddtoFavorite按钮,将当前露营id(在de URL中找到)推送到当前用户(req.user),而不刷新页面。我通过一个普通的express请求刷新页面,以正常的方式做到了这一点:


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