gpt4 book ai didi

javascript - 如何向正确的 GET 路由提交两个 Mongoose 查找查询?

转载 作者:行者123 更新时间:2023-12-01 01:23:31 28 4
gpt4 key购买 nike

我有两个单独的 app.get 路由,它们呈现“/”并包含 mongoose find{} 方法,该方法与两个 mongodb 集合相关。然后,我有相应的发布路由,将我在表单上输入的数据重定向/发布到“/”。

根据我使用的表单(devportals/new 或writingportals/new)提交数据,我希望它使用正确的 app.get 来查找数据,然后填充我的 index.ejs 文件以显示新的条目。

当我提交帖子时,它始终默认为顶部的 devportal.find{} GET 路由,即使我通过writingportals 表单向 mongodb 提交了更新。

app.get("/", function (req, res){
devportal.find({}, function(err, newDevPortal){
if(err){
console.log(err);
}else{
res.render("index",{newDevPortal: newDevPortal});
}
});});

app.get("/", function (req, res){
writingportal.find({}, function(err, newWritingPortal){
if(err){
console.log(err);
}else{
res.render("index",{newWritingPortal: newWritingPortal});
}
});
});


app.get("/portals/writingportals/new", function(req, res){
res.render("portals/writingportals/new");
});

app.get("/portals/devportals/new", function(req, res){
res.render("portals/devportals/new");
});

app.post("/", function(req, res){
var wpTitle = req.body.writingtitle;
var wpUrl = req.body.writingurl;
var wpImageUrl = req.body.writingimageurl;

writingportal.create({title: wpTitle, url: wpUrl, imageurl: wpImageUrl}, function(err, newWritingPortal){
if(err){
console.log(err);
}else{
res.redirect("/");
}
});
});

app.post("/", function(req, res){
var devTitle = req.body.writingtitle;
var devUrl = req.body.writingurl;
var devImageUrl = req.body.writingimageurl;

devportal.create({title: devTitle, url: devUrl, imageurl: devImageUrl}, function(err, newDevPortal){
if(err){
console.log(err);
}else{
res.redirect("/");
}
});
});

最佳答案

I have two separate app.get routes that render "/"

您的端点不会呈现“/”,它们会根据请求 uri 触发,在您的情况下为“/”。

接下来,两个端点不能具有相同的路由和相同类型的请求,任何 Web 服务器都是如此。因此,在您的情况下,您为“/”的 GET 请求定义了两个端点。您的代码无法理解这两条路线之间的差异,因此它总是会找到它找到的第一个路线。

最后,我将为您的解决方案添加这一点,您肯定会需要独特的端点,因为您正在采用带有数据模型的模板并发送回标记......基本上每个页面都有一个端点。

我会说我不太喜欢这种方法。我认为使用像 React 这样的框架会让生活变得更轻松,然后让每个请求“/”返回 index.html 并引用你的 React 代码...而不是整个 SSR 交易。

但是,对于很多事情来说,只需在请求中使用查询参数就很简单。下面是一个示例,其中定义了一个端点,该端点将通过查询参数返回任何集合中的所有数据:

app.get('/api/collection', function(req, res) {
var collection = req.query.collection;
var _collection = db.collection(collection);
_collection.find({}).toArray(function(err, docs) {
if (err)
return res.status(500).send(err);
res.send(docs);
})
})

然后请求网址将是 GET ->/api/collection?collection=NAME_OF_YOUR_COLLECTION

关于javascript - 如何向正确的 GET 路由提交两个 Mongoose 查找查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54029563/

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