javascript - 如何将用户的 displayName 添加到 Firestore 数据库集合条目?
问题描述
我正在使用 Firebase 身份验证和 Firestore 数据库设置一个简单的网页,该数据库从表单中获取用户输入,将输入添加为 Firestore 中的集合文档,然后还输出整个集合。集合中的每个文档都有两个字段,文档的名称和正文。目标是允许用户使用输入表单在网站上发帖。我描述的一切都在工作,但现在我想user.displayName
在帖子中显示,以显示究竟是谁创建了用户输入,这就是我不知道该怎么做。这是来自script.js
网站的相关代码:
const createForm = document.querySelector('#create-form');
createForm.addEventListener('submit', (e) => {
e.preventDefault();
db.collection('forumposts').add({
Body: createForm['body'].value,
//the line below is what I cannot figure out how to set up
Name: string(user.displayName)
}).then(() => {
//reset the form
createForm.reset();
}).catch(err => {
console.log(err.message)
})
});
我还在学习 JavaScript,所以如果我遗漏了一些明显的东西,我深表歉意。我知道正在正确收集用户的 displayName(在注册时收集),因为我可以将其记录到控制台并正确显示。我只是不知道如何将其添加为此数据库集合输入中的字段。我曾尝试在 SO 上搜索相关问题,但只收到与用户如何在注册时添加显示名称相关的问题。我已经有了显示名称,我只需要将它输入到数据库中。任何帮助将不胜感激!
解决方案
定义在哪里"user"
?如果没有用户登录,这可能为空,因此最好检查用户。
const createForm = document.querySelector('#create-form');
createForm.addEventListener('submit', (e) => {
e.preventDefault();
const user = firebase.auth().currentUser
if (user) {
db.collection('forumposts').add({
Body: createForm['body'].value,
Name: user.displayName || "No username"
}).then(() => {
//reset the form
createForm.reset();
}).catch(err => {
console.log(err.message)
})
} else {
console.log("NO user logged in")
}
});
您不需要String()
构造函数。如果displayName
已定义,它将是一个字符串。您可以if (user.displayName)
在添加帖子之前使用来检查用户是否有显示名称。
推荐阅读
- javascript - Google表格脚本将输入字段答案移动到空白输出字段
- python - 梯度提升 - 基于月份的价格预测
- windows - DebugActiveProcessStop 是否关闭句柄?
- c# - 来自 .NET Standard 类库的日志消息
- java - XML vs JSON vs SQLite 仅用于读取数据
- c# - 如何在两个布尔值标志之间切换?
- c - Tcl-C - 从 C 运行 Tcl Interperter 时不需要特定的包
- java - WildFly - 在域模式下创建数据源需要重新启动
- r - Rcpp 生成的 S4 类的 S4 方法似乎仍然需要 .onLoad()
- java - Last-Modified vs ETag http