Couchbase向Spatialviewrows Value添加引号

时间:2014-11-07 11:35:37

标签: python return-value geospatial couchbase bounding-box

我在Couchbase写了一个地理空间视图:

function (doc, meta) {
  if(doc.type == 'Bar') {
    if(doc.position) {
      emit(
          {
             type: "Point",
             coordinates: [doc.position.latitude, doc.position.longitude]
          }, doc.companyID);
    }
  }
}
然后我尝试通过边界框获取它们。 Couchbase正确返回此框中的对象。我希望将companyID作为值发出,并将其与另一个String进行比较,以确定是否允许该请求。

问题是我在unicode中得到了这样的值:

u'''CM-dummycompany'''

我从另一个cbobject得到的比较字符串是这样的:

u'CM-dummycompany'

当我比较这些时它也失败了。 那么任何想法如何比较正确的方法?

我使用==is进行了尝试。我也尝试将其转换为字符串然后进行比较,但这显然失败了,因为我有像äöü这样的不合格字符

或者更好的问题,为什么双引号被添加到发射值?

2 个答案:

答案 0 :(得分:1)

好的,我在Couchbase问题Tracker中找到了解决方案:

Spatial views return value is double encoded

所以对于每个也面临这个问题的人: 问题是,在空间视图中,值会被双重编码。这意味着如果你返回一个数字,它就变成了一个字符串。并且字符串变为带有转义引号的字符串。

实际上他们说它已经在3.0.1中修复了,但我已经更新了,问题仍然存在。

我的解决方法只是通过re删除引号:

value = re.sub('"','',value)

答案 1 :(得分:0)

请注意,在此发布中,Couchbase中的地理空间视图被认为是实验性的,而非生产就绪。官方支持计划至少在接下来的两个主要版本中发布。