我正在创建一个 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。我不明白为什么它不起作用并且似乎无法在网上找到任何答案。
可能存在隐藏字符或多余空格导致字符串比较失败。尝试在 userDoc 和 userid 上使用 .trim() :
console.log(userDoc.trim() === userid.trim());
此外,通过比较两个字符串的长度来检查是否有任何隐藏字符:
console.log(userDoc.length, userid.length);
这些步骤应有助于识别并解决字符串比较的问题。