今天在维护自己博客的时候,在前面增加了博客的搜索,记录一下。
MongoDB模糊查询主要是晕倒的正则表达式new RegExp
这个属性,可用模糊查询也可以是关键字查询
- 多条件模糊查询
async findArticle() {
const queryData = this.ctx.query;
let reg = new RegExp(queryData)
let filter = {$or:[
{title:{$regex:reg}},
{name:{$regex:reg}},
...
]}
article = await this.ctx.model.Article.find(filter)
}
- 关键字查询
async findArticle() {
const queryData = this.ctx.query;
let reg = new RegExp(title)
article = await this.ctx.model.Article.find({title:{$regex:reg}})
}
在Next.js中实现查询,由于自己的头部导航和内容在不同的组件中,所以是一路由的方式进行的查询。
// hearder 组件
const onSearch = (e) => {
Router.push({ path: "/", query: { title: e } });
};
// 首页组件
export async function getServerSideProps(context) {
console.log(context);
const options = {
page: 1,
limit: 10,
title: context?.query?.title,
};
if (context.query.page) {
options.page = Number(context.query.page);
}
const res = await axios({ url: servicePath.article, data: options });
const data = res?.data;
return {
props: {
data,
},
};
}