【问题标题】:How can a user's displayName be added to a Firestore database collection entry?如何将用户的 displayName 添加到 Firestore 数据库集合条目?
【发布时间】:2021-10-17 20:30:03
【问题描述】:

我正在使用 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 上搜索相关问题,但只收到与用户如何在注册时添加显示名称相关的问题。我已经有了显示名称,我只需要将它输入到数据库中。任何帮助将不胜感激!

【问题讨论】:

  • 您在注册时是否设置了displayName? IT 不是自动设置的。您能否分享注册码,以便我们确认您正在设置名称?
  • 我正在使用 Firebase Auth UI,它在注册时要求提供 displayName,所以是的,它是在注册期间设置的。

标签: javascript firebase google-cloud-firestore firebase-authentication firebaseui


【解决方案1】:

"user" 在哪里定义?如果没有用户登录,这可能为 null,因此最好检查用户。

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) 来检查用户是否有显示名称。

【讨论】:

  • 这成功了!谢谢,我意识到我只需要添加 const 用户位,现在它正在根据需要将用户名添加到帖子中。
【解决方案2】:

它是 String(),而不是 string()。只要 displayName 是用户的属性,就会被添加到数据库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2021-12-30
    • 2023-03-24
    • 2022-06-11
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多