【发布时间】:2021-07-06 21:49:27
【问题描述】:
在以下代码中,我从 Firestore 数据库中获取用户并将它们传递给视图。视图有一个输入字段,用于在您输入时搜索用户并过滤结果:
import React, { useState, useEffect } from "react";
import axios from "axios";
export default function App() {
const [users, setUsers] = useState([]);
const [search, setSearch] = useState("");
useEffect(() => {
firebase
.firestore()
.collection('users')
.onSnapshot((fetchedUsers) => {
setUsers(fetchedUsers.docs.map((user) => user.data()));
}).catch((error) => {
// error handling
});
}, [setUsers]);
return (
<div className="App">
<input
type="text"
placeholder="Search User..."
value={search}
onChange={(e) => setSearch(e.target.value)}
style={{ marginBottom: "30px" }}
/>
{users
.filter((e) => e.name.toLowerCase().includes(search.toLowerCase()))
.map((user) => (
<div>{user.name}</div>
))}
</div>
);
}
我正在从 Firestore 中获取用户,并且每天都会添加 1000 多个用户。因此,对用户列表的每次访问都算作 Firestore 读取次数。
如何减少阅读量,而不会失去在输入时搜索用户的可能性?我正面临这个问题,因为当我添加分页或仅获取最近的 50 个用户时,我没有可用于过滤的完整列表。
【问题讨论】:
标签: reactjs google-cloud-firestore