Mongodb Nodejs 正则表达式搜索
Mongodb Nodejs Regex Search
嘿,我正在制作一个作为部分搜索表单的网站。参考自:https://www.youtube.com/watch?v=ZC2aRON3fWw&t=42s 但我不明白为什么它不起作用。我用 pug 而不是 hbs。
这些是我的代码:
app.get('/sonuc', function(req, res, next){
var q = req.query.q;
Article.find({
title : {
$regex: new RegExp(q)
}
}, {
_id:0,
__v:0
}, function(err, data){
res.render('sonuc', {data:data})
}).limit(10);
});
});
那么这是我的布局哈巴狗:
.ui-widget
form.form-inline.my-2.my-lg-0
input.form-control.mr-sm-2(type='text', onkeyup='showResults(this.value)', placeholder='Search',action='/article/'+sorgu, aria-label='Search')
button.btn.btn-secondary.my-2.my-sm-0(type='submit')
#search-results(style='width:60px;top:-1px;position:relative')
在这个布局哈巴狗中,我认为 onkeyup 问题不起作用。我如何在该表单上实现该功能?
这是我的 main.js whihc 从数据库中获取查询并将其写入 html 形式:
var showResults = debounce(function(arg){
var value = arg.trim();
if(value == "" || value.length <= o){
$("#search-results").fadOut();
return;
}else{
$("#search-results").fadeIn();
};
var jqhr = $.get('/article/' + value, function(data){
})
.done(function(data){
if(data.length == 0){
$("search-resuts").append('<p classs="lead text-center mt-2">No Results</p>');
}else{
data.forEach(x => {
$("search-resuts").append('<a href="#"><p class="m-2 lead"><img style="width:60px;" src="images/supreme1.jpg">' + x.title +'</p></a>');
});
}
})
.fail(function(err){
console.log(err);
})
}); 200;
function debounce(func, wait, immediate){
var timeout;
return function(){
var context = this;
args = arguments;
var later = function(){
timeout= null;
if(!immediate)func.apply(context,args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if(callNow)func.apply(context,args);
};
};
我无法理解这些问题以及为什么它没有 work.As 摘要,我想制作一个使用正则表达式和 mongodb 的搜索引擎。这将是我引用的文章上方的 youtoube 视频中显示的部分内容。但真正的问题是,我无法理解函数 showResults 的代码块,也不知道如何将这些代码翻译到我的项目中。所以我在等你的帮助。我无法将视频上传到该网站,因此如果您可以给我您的 facebook、instagram 或电子邮件帐户,我可以发送应该解决的问题。我需要你的帮助。我已经为我的学校做这个项目很长时间了,但我无法继续前进。拜托我需要你的帮忙。
我希望我能很好地表达自己,你的帮助会解决它。
是的,我知道了。我做了很多更改而不是使用此代码块。
我观看了:https://www.youtube.com/watch?v=9_lKMTXVk64
我还记录了:
这两份文件对我帮助很大。因此,我的代码与这些文档中显示的代码几乎有 90% 相同。
这是我的 app.js :
app.get('/sonuc', function(req, res){
if (req.query.search) {
const regex = new RegExp(escapeRegex(req.query.search), 'gi');
Article.find({ "title": regex }, function(err, articles) {
if(err) {
console.log(err);
} else {
res.render("index", {
articles: articles
});
}
});
}
});
这是我的 index.pug 文件:
extends layout
block content
body
br
br
br
ul.list-group
each article, i in articles
li.list-group-item
a(href="/article/" + article._id)= article.title
这是我的layout.pug文件(但我会考虑文本形式)
form.form-inline.my-2.my-lg-0(action="/sonuc" method="GET")
input.form-control.mr-sm-2(type='text', name,="search", onkeyup='showResults(this.value)', placeholder='Search',action='/article/'+sorgu, aria-label='Search')
button.btn.btn-secondary.my-2.my-sm-0(type='submit')
请看:
https://github.com/nax3t/fuzzy-search
因为在我的解决方案中,我没有添加找不到单词时应用的消息。或者当用户没有搜索到这样的词时。 noMatch 查询。
但是在我将它应用到我的项目之后,我会把它添加到这里。
嘿,我正在制作一个作为部分搜索表单的网站。参考自:https://www.youtube.com/watch?v=ZC2aRON3fWw&t=42s 但我不明白为什么它不起作用。我用 pug 而不是 hbs。
这些是我的代码:
app.get('/sonuc', function(req, res, next){
var q = req.query.q;
Article.find({
title : {
$regex: new RegExp(q)
}
}, {
_id:0,
__v:0
}, function(err, data){
res.render('sonuc', {data:data})
}).limit(10);
});
});
那么这是我的布局哈巴狗:
.ui-widget
form.form-inline.my-2.my-lg-0
input.form-control.mr-sm-2(type='text', onkeyup='showResults(this.value)', placeholder='Search',action='/article/'+sorgu, aria-label='Search')
button.btn.btn-secondary.my-2.my-sm-0(type='submit')
#search-results(style='width:60px;top:-1px;position:relative')
在这个布局哈巴狗中,我认为 onkeyup 问题不起作用。我如何在该表单上实现该功能?
这是我的 main.js whihc 从数据库中获取查询并将其写入 html 形式:
var showResults = debounce(function(arg){
var value = arg.trim();
if(value == "" || value.length <= o){
$("#search-results").fadOut();
return;
}else{
$("#search-results").fadeIn();
};
var jqhr = $.get('/article/' + value, function(data){
})
.done(function(data){
if(data.length == 0){
$("search-resuts").append('<p classs="lead text-center mt-2">No Results</p>');
}else{
data.forEach(x => {
$("search-resuts").append('<a href="#"><p class="m-2 lead"><img style="width:60px;" src="images/supreme1.jpg">' + x.title +'</p></a>');
});
}
})
.fail(function(err){
console.log(err);
})
}); 200;
function debounce(func, wait, immediate){
var timeout;
return function(){
var context = this;
args = arguments;
var later = function(){
timeout= null;
if(!immediate)func.apply(context,args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if(callNow)func.apply(context,args);
};
};
我无法理解这些问题以及为什么它没有 work.As 摘要,我想制作一个使用正则表达式和 mongodb 的搜索引擎。这将是我引用的文章上方的 youtoube 视频中显示的部分内容。但真正的问题是,我无法理解函数 showResults 的代码块,也不知道如何将这些代码翻译到我的项目中。所以我在等你的帮助。我无法将视频上传到该网站,因此如果您可以给我您的 facebook、instagram 或电子邮件帐户,我可以发送应该解决的问题。我需要你的帮助。我已经为我的学校做这个项目很长时间了,但我无法继续前进。拜托我需要你的帮忙。 我希望我能很好地表达自己,你的帮助会解决它。
是的,我知道了。我做了很多更改而不是使用此代码块。
我观看了:https://www.youtube.com/watch?v=9_lKMTXVk64
我还记录了:
app.get('/sonuc', function(req, res){
if (req.query.search) {
const regex = new RegExp(escapeRegex(req.query.search), 'gi');
Article.find({ "title": regex }, function(err, articles) {
if(err) {
console.log(err);
} else {
res.render("index", {
articles: articles
});
}
});
}
});
这是我的 index.pug 文件:
extends layout
block content
body
br
br
br
ul.list-group
each article, i in articles
li.list-group-item
a(href="/article/" + article._id)= article.title
这是我的layout.pug文件(但我会考虑文本形式)
form.form-inline.my-2.my-lg-0(action="/sonuc" method="GET")
input.form-control.mr-sm-2(type='text', name,="search", onkeyup='showResults(this.value)', placeholder='Search',action='/article/'+sorgu, aria-label='Search')
button.btn.btn-secondary.my-2.my-sm-0(type='submit')
请看: https://github.com/nax3t/fuzzy-search
因为在我的解决方案中,我没有添加找不到单词时应用的消息。或者当用户没有搜索到这样的词时。 noMatch 查询。 但是在我将它应用到我的项目之后,我会把它添加到这里。