【发布时间】:2022-01-22 20:48:08
【问题描述】:
我的问题是,这是从数据库中过滤和获取特定数据的好方法,还是会在将来对我的数据库施加压力,并处理所有查询。我使用它来向用户建议基于他的关键字而不是一个直接的 API 响应的获取列表。顺便使用 react。
const [data,setData] = useState([]);
const [keyword,setKeyword] = useState('');
useEffect(() => {
const fetchData = async keyword => {
let filteredUsers;
try {
const res = await axios.get('/api/users');
filteredUsers= res.data.filter(user=>
user.username.toLowerCase().includes(keyword)
);
setData(filteredUsers);
} catch (error) {
console.error(error);
}
setLoadingdata(false);
};
keyword.length > 1 && fetchData(keyword);
}, [keyword]);
后端:
router.get('/', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
console.log(error.message);
res.status(500).send('Server Error');
}
});
【问题讨论】:
-
但这是前端代码,对吧?您可以改进您的查询,在数据库中进行过滤并仅返回您想要的元素。您可以在 mongo 查询中使用正则表达式来获取所需的用户。请发布后端代码。
-
@J.F.是的,这是前端。在后端,每次更改关键字时,我似乎都会获取数据库中的每个用户。对不起,我正在学习猫鼬,还是个新手。