如何将用户的显示名称添加到 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) 来检查用户是否有显示名称。