我希望我的网站的顶部有一个搜索栏,可以从mongo数据库返回单个文档(墨水)。在同一页面上,我希望能够从同一数据库访问所有文档。
由于我只能将一个结果发送到URL,因此我很难在一页上弄清楚该怎么做。
是否可以通过某种方式将所有文档发送到页面,然后在客户端使用AJAX进行搜索?我是编码的新手,想知道我是否要解决这个错误。
感谢您的帮助。这是我的代码的一部分,它将我想要的结果发送到不同的页面。
app.get("/", function(req, res){
// FIND ONE INK FROM DB
var noMatch = null;
if(req.query.search) {
Ink.find({ink: req.query.search}, function(err, foundInk){
if(err){
console.log(err);
} else {
if(foundInk.length < 1) {
noMatch = "No match, please try again.";
}
res.render('new-index', {ink: foundInk, locationArray: locationArray, noMatch: noMatch })
}
});
} else {
// FIND ALL INKS FROM DB
Ink.find({}, function(err, allInks){
if(err){
console.log(err);
} else {
res.render("index", {ink: allInks, locationArray: locationArray, noMatch: noMatch });
}
});
}
});
答案 0 :(得分:0)
理想情况下,您是这样创建端点的。
( id parameter is optional here...thats why the '?' )
www.example.com/api/inks/:id?
// return all the inks
www.example.com/api/inks
// return a specific ink with id=2
www.example.com/api/inks/2
因此,现在您可以通过/inks
渲染所有链接,并使用端点/ink/:id?
希望这会有所帮助!
答案 1 :(得分:0)
您可以为每个请求使用单独的端点。对于完全访问请求,可以呈现页面,调用res.render
,对于搜索请求,可以返回json调用res.json
。像这样:
app.get("/", function(req, res){
// FIND ALL INKS FROM DB
Ink.find({}, function(err, allInks){
if(err){
console.log(err);
} else {
res.render("index", {ink: allInks, locationArray: locationArray, noMatch: noMatch })
}
});
})
app.get("/search", function(req, res) {
// FIND ONE INK FROM DB
var noMatch = null;
Ink.findOne({ink: req.query.search}, function(err, foundInk){
if(err){
console.log(err);
} else
if(!foundInk) {
noMatch = "No match, please try again.";
}
res.json({ink: foundInk, locationArray: locationArray, noMatch: noMatch })
}
});
});
请注意在Ink.findOne
处理程序中对/search
的调用,该调用将仅返回一个文档。
这样,您可以向/ search发出AJAX请求,并解析从服务器返回的json。
我创建了一个样本库,其中的问题完全相同here