簡體   English   中英

如何將用戶的顯示名稱添加到 Firestore 數據庫集合條目中?

[英]How can a user's displayName be added to a Firestore database collection entry?

我正在設置一個帶有 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,所以如果我遺漏了一些明顯的東西,我深表歉意。 我知道用戶的顯示名稱(在注冊時收集)正在正確收集,因為我可以將其記錄到控制台並正確顯示。 我只是不知道如何將它添加為這個數據庫集合輸入中的一個字段。 我已經嘗試在 SO 上搜索相關問題,但只收到與用戶如何在注冊時添加顯示名稱相關的問題。 我已經有了顯示名稱,我只需要將它輸入到數據庫中。 任何幫助將不勝感激!

"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)來檢查用戶是否有顯示名稱。

是 String(),不是 string()。 只要 displayName 是用戶的屬性,它就會被添加到數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM