首页 > 解决方案 > 创建批量用户后,Firebase 不添加文档

问题描述

背景

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

代码

// 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) 添加到数据库中。

想法

我想出了一些关于这段代码不起作用的可能原因的想法:

标签: javascriptfirebasepromisegoogle-cloud-firestorees6-promise

解决方案


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

每次使用 Auth 创建新用户时,都会将新创建的用户设置为应用程序的当前用户。每当 Firestore 检测到发生用户更改时,它都会关闭所有未完成的流并取消任何正在进行的请求

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


推荐阅读