gpt4 book ai didi

javascript - Firebase 在批量创建用户后不添加文档

转载 作者:行者123 更新时间:2023-12-04 10:21:02 25 4
gpt4 key购买 nike

背景

我正在尝试使用网络应用程序中的初始用户列表为我的 Firebase 设置种子。这应该是一个两步过程:

  • 使用 createUserWithEmailAndPassword() 将用户添加到 Firebase 身份验证方法。
  • 使用 collection.add() 将用户添加到 Firestore 集合方法。

  • 代码
    // Initialize Firebase:

    var db = firebase.initializeApp(config).firestore();

    // Function to add a new user:

    function add(email) {
    firebase.auth().createUserWithEmailAndPassword(email, 'password')
    .then(function (user) {
    console.log('User created:', email, user.user.uid);
    return db.collection('users').add({
    email: email,
    uid: user.user.uid
    });
    })
    .then(function () {
    console.log('Document created:', email);
    })
    .catch(function (error) {
    console.error('Could not create user/document:', error);
    });
    }

    // Seed database with random users:

    for (var i = 0; i < 10; ++i) {
    add(i + '@foo.bar');
    }

    问题

    上一节中的代码不起作用。我的期望是它应该创建10个用户,并在成功时将10个相应的文档添加到数据库中。然而, 它仅将部分文档 (1-3) 添加到数据库 ,即使用户创建正确。

    想法

    我想出了一些关于此代码不起作用的可能原因的想法:
  • createUserWithEmailAndPassword()方法不仅会创建新用户,还会自动执行 登录 .可能,这可能会导致某种竞争条件。
  • createUserWithEmailAndPassword()方法返回一个带有 UserCredential 的 promise 新对象 已注册 用户(我相信)。但是,我可能错了,这个对象代表一个 登录 user 这可能是上一点导致竞争条件的原因。
  • 我有可能以错误的方式使用 promise ,因为第二个 then() 都没有。也不是 catch()叫做。
  • 最佳答案

    以下是 Firebase 支持答案的摘录:

    Each time a new user is created with Auth, it sets the newly created user as the current user of the application. Whenever Firestore detects that a user change has occurred, it closes all outstanding streams and cancels any requests in flight.



    这完全有道理并解释了这种行为。

    关于javascript - Firebase 在批量创建用户后不添加文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60848160/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com