查询mongodb的特定记录



我试图从我的课程模型中获取数据,我有一些与MongoDB数据库的课程相关的数据。我想实现一种搜索机制,以便只获取那些在搜索栏中输入的文档。

服务器端代码如下:我成功获得密钥,但无法获得有效记录。每次我执行搜索操作,我得到所有的记录。请帮助。

export const searchCourses = async (req, res) => {
try {
console.log('SEARCH COURSES ==>');
const { key } = req.params;
console.log(key)

const courses = await Course.find({
$or: [
{
title: { $regex: key, $options: 'i'}
},
{
description:{
$regex: key, $options:'$i'
}
}
]
},
)
.populate('instructor', '_id name')
.exec()
console.log(courses)
res.json(courses)
} catch (err) {
console.log(err);
res.sendStatus(404);
}
};

我不完全理解这个问题,但据我所知,您正试图通过用户的文本输入过滤结果?在这种情况下,您应该使用useState,并将其作为查询发送到服务器。下面是一个简短的例子:

客户机代码:

const Context = React.createContect({
async listData(query) {
return await fetch("/api/search?" + new URLSearchParams(query));
};
});
function SearchData(){
const {listData} = useContext(Context);
const [data, setData] = useState();
const [dataQuery, setDataQuery] = useState();
const { res } = async () => listGroups({ data }), [data]);
<input onChange={(e) => setDataQuery(e.target.value)} />
<button onClick={() => setData(dataQuery)} />
}

和服务器代码:

router.get("/api/search", async (req, res) => {
const [ data ] = req.query;
const filter = {};

if(data){
filter.data = {$in: [data]};
}

const db = await database.collection(collection).find(filter)
.map(({info} => ({info}))
.toArray()

res.json(db);
});

不确定这段代码是否能正常工作,但大多数函数都是从自己的代码复制过来的,可以正常工作。

相关内容

  • 没有找到相关文章

最新更新