在 Firebase Firestore 中注册时设置文档 ID
Posted
技术标签:
【中文标题】在 Firebase Firestore 中注册时设置文档 ID【英文标题】:Setting the doc ID on signup in firebase firestore 【发布时间】:2020-10-16 18:30:51 【问题描述】:我正在尝试在注册时使用用户 UID 的 ID 创建一个新文档。但是,在测试时,什么都没有发生,甚至没有错误代码。
我认为这是“db.collection('users').doc("cred.user.uid").set(data);”的问题以及之后如何调用 then 函数...
这里对 javascript 和 firebase 非常陌生(仅 4 天),所以对于经验丰富的专业人士来说应该不难理解。
提前致谢!
Javascript
signupButton.addEventListener('click', signup);
function signup()
signupButton.style.display = 'none';
signupError.style.display = 'none';
// get user info
var email = signupEmail.value;
var password = signupPassword.value;
// sign up the user
firebase.auth().createUserWithEmailAndPassword(email, password).then(cred =>
db.collection('users').doc("cred.user.uid").set(data);
)
.then(function()
window.location.replace('./dashboard/account.html');
)
.catch(function (error)
var errorCode = error.code;
var errorMessage = error.message;
console.log('Error code: ' + errorCode);
console.log('Error message: ' + errorMessage);
signupButton.style.display = 'flex';
signupError.innerText = errorMessage;
signupError.style.display = 'flex';
);
// Trigger button click on enter
var input = document.getElementById("signupPasswordConfirm");
// Execute a function when the user releases a key on the keyboard
input.addEventListener("keyup", function(event)
// Number 13 is the "Enter" key on the keyboard
if (event.keyCode === 13)
// Cancel the default action, if needed
event.preventDefault();
// Trigger the button element with a click
document.getElementById("signupButton").click();
);
【问题讨论】:
【参考方案1】:您似乎想从 Firestore 操作中返回承诺,以便稍后在承诺链中提取它以查明是否存在错误:
firebase.auth().createUserWithEmailAndPassword(email, password).then(cred =>
return db.collection('users').doc("cred.user.uid").set(data);
)
注意return
语句传播set()
返回的承诺。
另外,您确定要按字面意思创建一个名为“cred.user.uid”的文档吗?这就是你在这里所做的。
【讨论】:
谢谢道格,我添加了return
声明,但似乎表格没有转到我的.then function
任何想法? firebase.auth().createUserWithEmailAndPassword(email, password).then(cred => return db.coldlection('users').doc(cred.user.uid).set(data); ).then(function()
我让它部分工作,但是它给了我Function DocumentReference.set() requires between 1 and 2 arguments, but was called with 0 arguments.
@Doug Stevenson 的错误代码我怎样才能只在一个集合中创建一个只有一个文档 ID 而没有其他值的文档?跨度>
如果您有新问题,请单独发布并更详细地说明您正在尝试做的事情,以及没有按照您预期的方式工作。
张贴在这里,谢谢! ***.com/questions/62598411/…以上是关于在 Firebase Firestore 中注册时设置文档 ID的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 应用程序上过滤和排序 Firebase (Firestore) 数据
注册时无法将个人资料信息添加到 Firebase 集合中(vue | firebase)
当我使用 googleSignIn 时,用户在 Firestore 上重复