为什么在反应打字稿中有 2 个字符串返回 false

问题描述 投票:0回答:1

我正在创建一个 React 项目,我想从我的 firestore 数据库中获取用户名,但在查询时遇到错误。我发现当比较传递给函数和从数据库获取的 2 个字符串时,当字符串相同时,它会返回 false。

const fetchUserName = async (userid: string) => {
  try {
    const userdb = collection(firestore, "users");
    const querySnapshot = await getDocs(userdb);
    const userDoc = querySnapshot.docs[1].data().uID;
    console.log(userDoc, userid);
    console.log(userDoc === userid);
    console.log(typeof userDoc, typeof userid);
    return userDoc;
  } catch (error) {
    console.error("Error fetching user name:", error);
  }
};

第一个console.log的输出是ZZ7KDH1U2lenkHI331ryrxOECUg2 "ZZ7KDH1U2lenkHI331ryrxOECUg2",第二个是false,第三个是string string。我不明白为什么它不起作用并且似乎无法在网上找到任何答案。

typescript firebase google-cloud-firestore
1个回答
0
投票

可能存在隐藏字符或多余空格导致字符串比较失败。尝试在 userDoc 和 userid 上使用 .trim() :

console.log(userDoc.trim() === userid.trim());

此外,通过比较两个字符串的长度来检查是否有任何隐藏字符:

console.log(userDoc.length, userid.length);

这些步骤应有助于识别并解决字符串比较的问题。

© www.soinside.com 2019 - 2024. All rights reserved.