GeoFire 结构与文档不匹配

Posted

技术标签:

【中文标题】GeoFire 结构与文档不匹配【英文标题】:GeoFire structure doesn't match documentation 【发布时间】:2016-06-14 12:52:47 【问题描述】:

GeoFire 正在使用未记录的结构保存数据。我怎样才能像官方示例一样保存它。我没有遵循任何特定的教程或指南,但我的工作主要基于这些示例。

我已经能够复制该问题:

JS:

var ref = new Firebase("https://skgz3dfvs9.firebaseio-demo.com");
var geoFire = new GeoFire(ref.child("_geofire"));

geoFire.set("ADb3b3j2"+parseInt(Math.random(1000)*10000), [20.573771400000002, -100.35827]).then(function() 
  document.getElementById("result").innerhtml = "Provided key has been added to GeoFire";
, function(error) 
  document.getElementById("result").innerHTML = "Error: " + error;
);

HTML

<div id="result"></div>

https://jsfiddle.net/johnhparkerg/c0852c6s/1/

生成如下所示的 JSON:

  
   "_geofire":  
      "i":  
         "9g8th336fu:ADb3b3j2":true,
         "9g8th336fu:ADb3b3j21770":true,
         "9g8th336fu:ADb3b3j23390":true,
         "9g8th336fu:ADb3b3j24122":true,
         "9g8th336fu:ADb3b3j25036":true,
         "9g8th336fu:ADb3b3j27393":true,
         "9g8th336fu:ADb3b3j28182":true,
         "9g8th336fu:ADb3b3j28276":true,
         "9g8th336fu:ADb3b3j29206":true,
         "9g8th336fu:ADb3b3j29674":true
      ,
      "l":  
         "ADb3b3j2":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j21770":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j23390":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j24122":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j25036":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j27393":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j28182":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j28276":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j29206":[  
            20.573771400000002,
            -100.35827
         ],
         "ADb3b3j29674":[  
            20.573771400000002,
            -100.35827
         ]
      
   

https://skgz3dfvs9.firebaseio-demo.com/

结果应该是这样的:

  
   "fish1":  
      "g":"pns0h0mf2u",
      "l":[  
         -53.435719,
         140.808716
      ]
   ,
   "fish2":  
      "g":"u417k3dwub",
      "l":[  
         56.83069,
         1.94822
      ]
   ,
   "fish3":  
      "g":"8m3rz3s480",
      "l":[  
         30.902225,
         -166.66809
      ]
   

(这种结构在有关 firebase 和 geofire 的示例和文档中普遍存在)

这里是examples。

我希望我已经足够清楚了,否则请告诉我。

【问题讨论】:

不是链接到仪表板,而是将(最小)JSON 包含到您的问题中(作为文本)。链接腐烂,因为您链接到的问题中的图像显示。顺便说一句,你的 jsfiddle 是空的。 除此之外,我不明白你在问什么。为什么根据你的结构是错误的?你是怎么写结构的?它与教程不同的事实无关紧要,除非您尝试遵循该教程。但如果是这种情况,请显示您使用的确切最小代码。没有mcve 就很难提供帮助。 我进行了编辑以使其更清晰,请就问题的清晰度发表您的意见,如果可能的话,请提供一些指导。 【参考方案1】:

问题是早期版本的 GeoFire 以不同的格式存储数据,问题是在任何地方都没有对它的引用。

【讨论】:

以上是关于GeoFire 结构与文档不匹配的主要内容,如果未能解决你的问题,请参考以下文章

GeoFire的半径单位是多少?

Mongodb更新与子文档匹配的子文档值并且不更改其他字段

轻量级组件中剪辑区域的处理与文档不匹配?

无法将 request.auth.id 与 Firestore 规则中的文档 ID 匹配

如何在 Mongoose 中找到与数组字段的最后一个元素与给定查询值匹配的所有文档?

Python Google Map API提供的OSM_type与文档不匹配