>

영어로 죄송하지만 Firebase Cloud Func에서 각각의 key_enter 및 key_exited를 사용하여 검색어 지오 파이어를 만들어 내 위치 근처의 지리적 지점 목록을 유지 관리 할 수 ​​있는지 의심 스럽습니다. 몇 십만. 사용자가 노드 Firebase 실시간 데이터베이스에서 지리적 위치를 업데이트 할 때 이러한 모든 상황이 발생하고 수십만 명에 이르는이 목록이 사용자의 위치 근처에서 몇 개로 줄어든다는 것을 고려하면

  • 답변 # 1

    다음은 GeoFire로 업데이트하는 데 사용한 트릭입니다

    exports.testLocation = functions.database.ref('/tests/{test}').onWrite(event => {
        let data = event.data.val();
        console.log(data);
        console.log(event.params.test);
        if (data.location && data.location.coords) {
            console.log('Update GeoFire');
            geoBase = new geoBase(event.data.adminRef.parent.parent.child('/GeoFireTests'));
            geoBase.addLocation(event.params.test, [data.location.coords.latitude, data.location.coords.longitude]);
        }
    });
    
    

    GeoFire

    let GeoFire = require('geofire');
    module.exports = function(ref) {
        this.geoFire = new GeoFire(ref);
        this.addLocation = (key, location) => {
            this.geoFire.set(key, location).then(() => {
                console.log('Update succesfull');
            }).catch(error => {
                console.log(error);
            });
        }
    }
    
    

  • 답변 # 2

    모듈없는 모습입니다

    let functions = require('firebase-functions');
    let GeoFire = require('geofire');
    exports.testLocation = functions.database.ref('/items/{item}').onWrite(event => {
        let data = event.data.val();
        console.log(data);
        console.log(event.params.item);
        if (data.location && data.location.coords) {
           console.log('Update GeoFire');
           let ref = event.data.adminRef.parent.parent.child('/items_locations'));
          let key = event.params.test;
          let location = [data.location.coords.latitude, data.location.coords.longitude]);
          let geoFire = new GeoFire(ref);
          geoFire.set(key, location).then(() => {
             console.log('Update succesfull');
       }).catch(error => {
          console.log(error);
       });
      }
    }
    
    

관련 자료

  • 이전 javascript - jQuery와 CSS를 사용하여 스크롤에서 고정 된 div를 겹치는 방법이 있습니까?
  • 다음 python - 웹 소켓을 열 때 토네이도 403 GET 경고