Javascript 为什么不是';云Firebase中是否正在创建新集合?

Javascript 为什么不是';云Firebase中是否正在创建新集合?,javascript,database,firebase,google-cloud-firestore,Javascript,Database,Firebase,Google Cloud Firestore,我已经返回了一个承诺“db”来访问集合。该集合还不存在,因为当我允许用户注册Firebase时,它会自动创建集合。然后,我通过传递id创建了一个文档,所以当我保存到该文档时,它将为该文档创建一个自动id 然后,我设置了一个名为email的属性,然后将email值传递给该属性。现在,文档将具有与用户相同的id 问题是它没有创造新的收藏,有什么想法吗 function signup(){ var userEmail = document.getElementById("emai

我已经返回了一个承诺“db”来访问集合。该集合还不存在,因为当我允许用户注册Firebase时,它会自动创建集合。然后,我通过传递id创建了一个文档,所以当我保存到该文档时,它将为该文档创建一个自动id

然后,我设置了一个名为email的属性,然后将email值传递给该属性。现在,文档将具有与用户相同的id

问题是它没有创造新的收藏,有什么想法吗

   function signup(){

  var userEmail = document.getElementById("email_field").value;
  var userPass = document.getElementById("password_field").value;

  firebase.auth().createUserWithEmailAndPassword(userEmail, userPass)(cred => {
    return db.collection('users').doc(cred.user.uid).set({
      email: document.getElementById("email_field").value
    }).then
  })
  .catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    window.alert("Error : " + errorMessage);
    // ...
  });
}
以下是我在Cloud Firebase规则中设置的内容,以及允许创建的文档:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
}
}

如果在调用set方法时看不到任何错误,我建议您使用(保持一些逻辑分离,并且在当前实现中没有太多承诺),这样您就可以使用触发器上给出的参数引用用户信息


PS:您在db调用时需要“then”吗?(正如doug在评论中提到的)

您的代码显然没有出现任何错误。您有什么代码来检查和报告错误?我们所能看到的只是两个变量的赋值。另外,你有一个悬挂的
然后
什么也不做-你需要它吗?嗨,道格,谢谢你的评论。我删除了悬挂的“then”,并添加了一种检查错误的方法。我已经用这些更改更新了上面的代码。没错,我已经从db调用中删除了“then”。谢谢你的帮助,我会检查firebase身份验证触发器。