有没有更好的方法在没有多个获取请求的情况下实现这个?
Is there a better way of implementing this without multiple fetch request?
这是来自 React 应用程序的登录组件,我正在尝试使用 Firebase 作为我的实时数据库进行简单的身份验证登录。
我的第一个方法是执行获取请求 (GET) 以查看是否存在任何现有用户。之后,如果密码确实与用户匹配,我想将“isLoggedIn”字段更新为 true。为了实现以下,又发起了一个fetch请求(PATCH)。
因此,我想知道在一个函数中有多个获取请求是否是一种不好的做法,并且想知道是否有更有效或更好的方法来实现这个简单的应用程序?
const loginHandler = async (userName, password) => {
const url = `insert_url_link_here/users/${userName}.json`;
try {
const response = await fetch(url);
const user = await response.json();
if (user.password === password) {
await fetch(url, {
method: "PATCH",
body: JSON.stringify({ isLoggedIn: true }),
});
}
} catch (error) {
console.log(error);
}
这是我的数据库的架构。
--users:
eric:
isLoggedIn: false
password: "321"
test:
isLoggedIn: false
password: "222"
我建议使用 Firebase 客户端实现并查看 Firebase 文档。有各种语言的详细描述和明确的示例:
https://firebase.google.com/docs/auth/web/start
此外,我看不出在你这边存储密码或登录状态有什么意义,因为 Firebase Auth 已经以安全的方式为你做了这件事。
您正在通过它的 REST API 访问 Firebase 实时数据库,它实现了简单的 CRUD 操作,并且无法将读取和写入操作合并到一个操作中。
唯一的其他相关操作是 conditional write,如果数据自读取后未被修改,您可以使用它仅写入数据。您可以使用它来实现乐观的 compare-and-set 之类的交易机制,但鉴于您正在切换布尔值,它似乎不适用于此处。
如果您在支持它的环境中,您可能需要考虑使用适用于该平台的 Firebase SDK,因为 SDK 通常使用网络套接字与服务器通信,这通常会导致很多比执行多个单独的 HTTP 请求更有效。
这是来自 React 应用程序的登录组件,我正在尝试使用 Firebase 作为我的实时数据库进行简单的身份验证登录。
我的第一个方法是执行获取请求 (GET) 以查看是否存在任何现有用户。之后,如果密码确实与用户匹配,我想将“isLoggedIn”字段更新为 true。为了实现以下,又发起了一个fetch请求(PATCH)。
因此,我想知道在一个函数中有多个获取请求是否是一种不好的做法,并且想知道是否有更有效或更好的方法来实现这个简单的应用程序?
const loginHandler = async (userName, password) => {
const url = `insert_url_link_here/users/${userName}.json`;
try {
const response = await fetch(url);
const user = await response.json();
if (user.password === password) {
await fetch(url, {
method: "PATCH",
body: JSON.stringify({ isLoggedIn: true }),
});
}
} catch (error) {
console.log(error);
}
这是我的数据库的架构。
--users:
eric:
isLoggedIn: false
password: "321"
test:
isLoggedIn: false
password: "222"
我建议使用 Firebase 客户端实现并查看 Firebase 文档。有各种语言的详细描述和明确的示例:
https://firebase.google.com/docs/auth/web/start
此外,我看不出在你这边存储密码或登录状态有什么意义,因为 Firebase Auth 已经以安全的方式为你做了这件事。
您正在通过它的 REST API 访问 Firebase 实时数据库,它实现了简单的 CRUD 操作,并且无法将读取和写入操作合并到一个操作中。
唯一的其他相关操作是 conditional write,如果数据自读取后未被修改,您可以使用它仅写入数据。您可以使用它来实现乐观的 compare-and-set 之类的交易机制,但鉴于您正在切换布尔值,它似乎不适用于此处。
如果您在支持它的环境中,您可能需要考虑使用适用于该平台的 Firebase SDK,因为 SDK 通常使用网络套接字与服务器通信,这通常会导致很多比执行多个单独的 HTTP 请求更有效。