Firebase 是 Google 提供的 Backend-as-a-Service (BaaS) 平台,用于构建 Web、Android 和 iOS 应用。它提供了实时数据库和 Firestore 两种数据存储解决方案。Firestore 是一种 NoSQL 文档数据库,支持复杂的查询操作。
在使用 Firestore 进行查询时,如果发现 where
条件没有按预期工作,可能是以下几个原因:
确保查询条件中的字段类型与数据库中的字段类型一致。例如:
// 数据库中的数据
{
"users": [
{ "id": 1, "age": 25 },
{ "id": 2, "age": 30 }
]
}
// 正确的查询
db.collection('users').where('age', '==', 25);
如果 Firestore 提示需要创建索引,可以在 Firebase 控制台中手动创建索引,或者让 Firestore 自动生成索引。
确保查询语法正确。例如,查询嵌套字段:
// 数据库中的数据
{
"users": [
{ "id": 1, "info": { "age": 25 } },
{ "id": 2, "info": { "age": 30 } }
]
}
// 正确的查询
db.collection('users').where('info.age', '==', 25);
确保安全规则允许用户进行查询。例如:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null;
}
}
}
以下是一个完整的示例,展示如何正确使用 where
查询:
// 初始化 Firestore
const firebase = require('firebase/app');
require('firebase/firestore');
const firebaseConfig = {
// 你的 Firebase 配置
};
firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
// 查询年龄为 25 的用户
db.collection('users')
.where('age', '==', 25)
.get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${JSON.stringify(doc.data())}`);
});
})
.catch((error) => {
console.error("Error getting documents: ", error);
});
通过以上步骤,你应该能够解决 Firestore 查询不应用 where
条件的问题。
领取专属 10元无门槛券
手把手带您无忧上云