我在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
试过了。我还尝试将其转换为字符串,然后进行比较,但显然失败了,因为我有像äöü
这样的非格式字符
或者更好的问题是,为什么在发出的值中加上双引号?你知道吗
好吧,我在Couchbase问题追踪系统里找到了解决方案:
Spatial views return value is double encoded
因此,对于同样面临这个问题的每个人: 问题是,在空间视图中,值被双重编码。这意味着如果您返回一个数字,它将变成一个字符串。字符串变成带转义引号的字符串。你知道吗
实际上他们说它已经在3.0.1中修复了,但是我已经更新了,问题仍然存在。你知道吗
我的解决方法是通过
re
删除引号:只需知道,在Couchbase发布的地理空间视图被认为是实验性的,而不是生产准备就绪。官方的支持至少要等到下两个主要版本才会到来。你知道吗
相关问题 更多 >
编程相关推荐