- 当前 Bug 的表现(可附上截图)
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
入坑经历与最后的困惑:
先看官方文档:
db.command.geoWithin
相关文档链接:click
按照文档测试,输入如下代码:
location: _.geoWithin({geometry: Polygon([ LineString([ Point(0, 0), Point(100, 0), Point(100, 50), Point(0, 50) ]) ]), })
|
云开发中,进行云端测试后,提示:
Point cannot be invoked without 'new' |
坑1:Point不是官方文档那么用滴,我们不是一个世界。
回到真实,在所有的Geo元素前面都加了new:
location: _.geoWithin({ geometry: new Polygon([ new LineString([ new Point(0, 0), new Point(100, 0), new Point(100, 50), new Point(0, 50) ]) ]), }) |
坑2:报错:
LineString is not a constructor |
看来LineString 不是一回事啊,就不给你new了:
location: _.geoWithin({ geometry: new Polygon([ LineString([ new Point(0, 0), new Point(100, 0), new Point(100, 50), new Point(0, 50) ]) ]), }) |
坑3:报错:
LineString is not a function |
可是,我在上文进行了声明:
const {Point, LineString, Polygon} = db.Geo |
难道db.Geo.LineString不是一个函数?
我进行检查:
console.log( '是不是函数?' , typeof (LineString)) |
结果 返回了如下:
是不是函数? undefined |
发现:我的wx-server-sdk好久没更新了,还是0.1.3
更新到0.5.0后, LineString
就是函数了.
geoWithin
也可用了.
tip:
geoWithin 后面跟的矢量,必须是闭环, 否则无法检索
请官员将文档注明一下版本号 另外,不new一下就不能用, 那也是文档有问题.
我试了半天了,终于找到答案了,赞!!!