Node.js服务器集成Firestore查询时遭遇TypeError与SyntaxError问题求助
搞定Firestore查询的两个错误:
_internalPath未定义与语法错误 我来帮你梳理下你遇到的问题,其实都是where函数的参数写法出了错,咱们一步步来解决:
第一个错误:TypeError: Cannot read property '_internalPath' of undefined
你最开始的代码里:
const q = query(userDb, where("username" == username));
这里犯了个小失误——你把"username" == username这个布尔比较的结果传给了where函数。这个比较会得到true或false,但where需要的是三个明确参数:字段名字符串、操作符、要匹配的值。错误的参数让Firestore找不到合法的字段路径,所以抛出了那个_internalPath的错误。
第二个错误:SyntaxError: Unexpected token '=='
你修改的时候写成了:
const q = query(userDb, where("username", ==, username));
这里的问题是==没有加引号!在JS里==是比较运算符,不能直接当参数传递,Firestore要求操作符是字符串形式,比如"=="。
正确的写法在这里
把where的参数改成标准的三元结构就没问题了:
async function searchUsername(username){ try{ // where的三个参数:字段名、字符串操作符、要匹配的值 const q = query(userDb, where("username", "==", username)); const querySnapshot = await getDocs(q); querySnapshot.forEach((doc) => { console.log(doc.id, " => ", doc.data()); }); } catch(err){ console.log(err); } };
最后再检查几个小细节
- 确保
userDb是正确初始化的集合引用,比如:
// 先初始化Firestore实例 const { getFirestore, collection } = require("firebase/firestore"); const db = getFirestore(); // 假设你的用户数据存在叫"users"的集合里 const userDb = collection(db, "users");
- 确认Firebase应用已经正确初始化,配置信息没有写错。
内容的提问来源于stack exchange,提问作者Knowingwings
相关产品推荐
相关产品推荐

