我正在使用GeoFire在React Native应用程序的Firebase实时数据库中添加和检索位置数据。使用addDataToGeofire()
函数成功添加数据,但当我尝试使用getDataFromGeofire()
函数检索数据并使用geoFire.query
查询数据时,收到以下错误消息:
"错误[错误:Firebase数据库(${JSCORE_VERSION})内部Assert失败:未知节点类型]警告[@firebase/database:消防基地警告:使用未指定的索引。将在客户端下载并筛选您的数据。请考虑添加."indexOn":"g"添加到安全规则以获得更好的性能。错误[TypeError:t. split不是函数。(在"t. split("/")"中,"t. split"未定义)]错误[错误:Firebase数据库(${JSCORE_VERSION})内部Assert失败:未知节点类型]警告[@firebase/database:消防基地警告:使用未指定的索引。将在客户端下载并筛选您的数据。请考虑添加."indexOn":"g"安全规则以获得更好的性能]"geoFire.get()
函数工作正常,返回特定键的位置数据,但是geoFire.query()
函数根本不工作,我检查了Firebase Realtime Database中的数据结构,使用geoFire.set()
添加数据后,结果如下:
{"-NP4heZ1yLXk96HiScqH ":{".优先级":"u2mw1ze54y","g":"u2mw1ze54y"、"l":[40.502686、19.0655181 ]}}
我不确定是什么原因导致geoFire.query()
函数出错。有人能帮我解决这个问题吗?下面是我的代码:
- 防火墙助手. tsx**:
public async addDataToGeofire(){
const geoFire = await new GeoFire(this.firebaseRef);
const requestId = "-NP4heZ1yLXk96HiScqH";
const latitude = 40.502686;
const longitude = 19.0655181;
await geoFire.set(requestId, [latitude, longitude])
.then(() => {
console.log(`Coordinates successfully added to the key: ${requestId}`);
})
.catch((error) => {
console.error(`An error occurred while adding the coordinate" ${error}`);
});
}
public async getDataFromGeofire(){
const geoFire = await new GeoFire(this.firebaseRef);
await geoFire.get("-NP4heZ1yLXk96HiScqH").then(function(location) {
if (location === null) {
console.log("Provided key is not in GeoFire");
}
else {
console.log("Provided key has a location of " + location);
}
}, function(error) {
console.log("Error: " + error);
});
const geoQuery = geoFire.query({
center: [40.502686, 19.0655181],
radius: 100
});
const onReadyRegistration = geoQuery.on("ready", () => {
console.log("GeoQuery has loaded and fired all other events for initial data");
});
}
- 应用程序. tsx:**
constructor(){
this.someMethod();
}
async someMethod(){
await databaseHelper.addDataToGeofire().then(async () => {await databaseHelper.getDataFromGeofire()});
}
整个输出:
已成功将LOG坐标添加到项:- NP4heZ1yLXk96HiScqH日志提供的项的位置为40.502686,19.0655181错误[错误:Firebase数据库(${JSCORE_VERSION})内部Assert失败:未知节点类型]警告[2023 - 02 - 26T19:54:41.545Z ]@firebase/数据库:消防基地警告:使用未指定的索引。将在客户端下载并筛选您的数据。请考虑添加."indexOn":"g"添加到安全规则以获得更好的性能。错误[TypeError:t. split不是函数。(在"t. split("/")"中,"t. split"未定义)]错误[错误:Firebase数据库(${JSCORE_VERSION})内部Assert失败:未知节点类型]警告[2023 - 02 - 26T19:54:41.698Z ]@firebase/数据库:消防基地警告:使用未指定的索引。将在客户端下载并筛选您的数据。请考虑添加."indexOn":"g"到您的安全规则以获得更好的性能。
先谢谢你
1条答案
按热度按时间llycmphe1#
正如错误所述,您正在查询数据库规则中没有定义索引的路径上的数据。
如果您真的将数据直接存储在根目录下(这很少见,但并非不可能),则索引将为: