javascript - 我怎样才能使这个console.log在上面的功能完成后执行?
问题描述
我正在使用firebase,但遇到了问题。我要做的是允许用户注册,但要检查该帐户不存在,我想从 firestore 检索所有用户名,然后搜索它们以查看他们建议的用户名是否已经存在。这是我的代码:
document.querySelector("#form1").addEventListener("submit", e => {
e.preventDefault();
var users;
firestore.collection("users").get().then(querySnapshot => {
users = querySnapshot.docs.map(doc => doc.data());
console.log(users);
});
console.log(users);
});
所以我知道当我第二次尝试执行 console.log(users) 时,上面的函数可能没有完成它的执行,这就是为什么当我将它记录到控制台时我看到“未定义”的原因。如何更改我的代码,以便第二个 console.log(users) 等待上述功能完成?
我尝试对此进行调查,发现一些与“异步”和“等待”有关的东西,但我无法弄清楚如何在我的代码中使这些工作。也许这可能是解决方案?
解决方案
我不能警告你足够多,不要让所有人users
检查其中一个是否具有相同的用户名。我强烈建议查询具有相同用户名的单个用户:
document.querySelector("#form1").addEventListener("submit", async (e) => {
e.preventDefault();
const theEnteredUsername = ""; // get it from somewhere
// Create a reference to the cities collection
var ref = firestore.collection("users");
// Create a query against the collection.
var query = await ref.where("username", "==", theEnteredUsername).get();
if (query.empty) {
//you can use the username
} else {
//username taken!!!
}
});
否则,您的 Firebase 账单将随着您应用中用户的增加而大幅增长。
推荐阅读
- python - 如何在 vs code python 中导入 skimage?它向我显示了图像和文本中提到的错误
- javascript - 查找和替换打字稿角度
- c# - 无法使用 Console.WriteLine(); 从一个方法
- sql - SQL 行合并
- python - 使用条件转换特定字符串中的列表
- gstreamer - gstreamer 你能看出为什么没有声音吗?
- basic-authentication - Callrail - 在 URL 参数下生成 user_token 代码
- python - 如何优化多列的条件累积
- fltk - FLTK 窗口的圆角
- python - 在 Pycaret 中选择要规范化的特定列