如何将用户的显示名称添加到 Firestore 数据库集合条目中?
How can a user's displayName be added to a Firestore database collection entry?
我正在使用 Firebase 身份验证和 Firestore 数据库设置一个简单的网页,该数据库从表单中获取用户输入,将输入添加为 Firestore 中的集合文档,然后还输出整个集合。集合中的每个文档都有两个字段,文档的名称和正文。目标是允许用户使用输入表单在网站上制作 posts。我描述的一切都有效,但现在我想显示 user.displayName
和 post,以显示用户输入的确切创建者,而这正是我不知道该怎么做的。下面是相关代码,来自网站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,所以如果我遗漏了一些明显的东西,我深表歉意。我知道用户的显示名称(在注册时收集)正在被正确收集,因为我可以将其记录到控制台并正确显示。我只是不知道如何将它添加为这个数据库集合输入中的一个字段。我曾尝试在 SO 上搜索相关问题,但只收到与用户如何在注册时添加显示名称相关的问题。我已经有了显示名称,我只需要将它输入到数据库中。任何帮助将不胜感激!
是String(),不是string()。只要 displayName 是 属性 用户,它就会被添加到数据库中。
"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
它将是一个字符串。您可以在添加 post 之前使用 if (user.displayName)
来检查用户是否有显示名称。
我正在使用 Firebase 身份验证和 Firestore 数据库设置一个简单的网页,该数据库从表单中获取用户输入,将输入添加为 Firestore 中的集合文档,然后还输出整个集合。集合中的每个文档都有两个字段,文档的名称和正文。目标是允许用户使用输入表单在网站上制作 posts。我描述的一切都有效,但现在我想显示 user.displayName
和 post,以显示用户输入的确切创建者,而这正是我不知道该怎么做的。下面是相关代码,来自网站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,所以如果我遗漏了一些明显的东西,我深表歉意。我知道用户的显示名称(在注册时收集)正在被正确收集,因为我可以将其记录到控制台并正确显示。我只是不知道如何将它添加为这个数据库集合输入中的一个字段。我曾尝试在 SO 上搜索相关问题,但只收到与用户如何在注册时添加显示名称相关的问题。我已经有了显示名称,我只需要将它输入到数据库中。任何帮助将不胜感激!
是String(),不是string()。只要 displayName 是 属性 用户,它就会被添加到数据库中。
"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
它将是一个字符串。您可以在添加 post 之前使用 if (user.displayName)
来检查用户是否有显示名称。