Couchbase向Spatialviewrows值添加引号

2024-09-30 00:26:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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作为值发出,并将其与另一个字符串进行比较,以确定请求是否被允许。你知道吗

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

u'''CM-dummycompany'''

我从另一个物体上得到的比较结果如下:

u'CM-dummycompany'

当我比较这些也失败了。 你知道如何比较正确的方法吗?你知道吗

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

或者更好的问题是,为什么在发出的值中加上双引号?你知道吗


Tags: 字符串视图dociftypebar空间position
2条回答

好吧,我在Couchbase问题追踪系统里找到了解决方案:

Spatial views return value is double encoded

因此,对于同样面临这个问题的每个人: 问题是,在空间视图中,值被双重编码。这意味着如果您返回一个数字,它将变成一个字符串。字符串变成带转义引号的字符串。你知道吗

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

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

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

只需知道,在Couchbase发布的地理空间视图被认为是实验性的,而不是生产准备就绪。官方的支持至少要等到下两个主要版本才会到来。你知道吗

相关问题 更多 >

    热门问题