Ошибка: неверное местоположение: широта должна существовать в GeoPoint - PullRequest
2 голосов
/ 02 апреля 2020

Я получаю приведенную ниже ошибку при доступе к документу пожарного хранилища в облачной функции

"Ошибка: недопустимое местоположение: широта должна существовать в GeoPoint"

Я вижу ниже ошибку в журналах Firebase

Ошибка: недопустимое местоположение: в GeoPoint должна существовать широта в validateLocation (/srv/node_modules/geofirestore/dist/index.cjs.js:567:15) при CalculateDistance (/ srv / node_modules / geofirestore / dist / index. cjs. js: 120: 5) в /srv/node_modules/geofirestore/dist/index.cjs.js:1148: 32 в Array.forEach () в /srv/node_modules/geofirestore/dist/index.cjs.js:1147:27 в Array.forEach () в новом GeoJoinerGet (/ srv / node_modules / geofirestore /) dist / index. cjs. js: 1146: 19) на /srv/node_modules/geofirestore/dist/index.cjs.js:1432:72 на at process._tickDomainCallback (internal / process / next_tick. js: 229: 7)

мой файл index.ts

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';import * as geofire from 'geofirestore';

admin.initializeApp();

const db = admin.firestore();

const geofirestore = new geofire.GeoFirestore(db);
const geocollection = geofirestore.collection('posts');

export const sendPostToDevice = functions.firestore
.document('posts/{postId}')
.onCreate((snapshot, context) => {
const post = snapshot.get('content');

    const l = snapshot.get('l');

    const GeoPoint = admin.firestore.GeoPoint;

    const gp = new GeoPoint(37.4219983, -122.084);
    const query = geocollection.near({
        center: gp,
        radius: 1000
    });
    query.get().then((value) => {
        console.log(value);
    }).catch((err) => console.log(err));
    return null;
})

Дополнительная информация: я использую GeoFlutterFire в моем трепетать приложение и хранить дополнительные поля (g: geoha sh и l: местоположение, сохраненное как геопункт), при создании документа Post, требуемого GeoFirestore. Я подозреваю, что ошибка из-за того, что я храню поля «g» и «l».

Я использую GeoFirestore в облачных функциях для запроса ближайших пользователей, получения их токенов FCM и предоставления их в Firebase Messaging для отправки уведомлений.

Нужно ли сохранять поля g и l определенным образом? Можем ли мы использовать только GeoFlutterFire для моей цели?

Спасибо за вашу помощь!

Fields in my firestore.

1 Ответ

1 голос
/ 05 апреля 2020

new GeoPoint (37.4219983, -122.084) выглядит нормально, поэтому я подозреваю, что это может быть геолокация одного из ваших объектов геоколлекции, которая вызывает проблемы.

...