2014-11-07 2 views
0

Я написал geospatialview в Couchbase:Couchbase добавления котировки Spatialviewrows Значение

function (doc, meta) { 
    if(doc.type == 'Bar') { 
    if(doc.position) { 
     emit(
      { 
      type: "Point", 
      coordinates: [doc.position.latitude, doc.position.longitude] 
      }, doc.companyID); 
    } 
    } 
} 

Я затем попытаться получить их через рамки. Couchbase правильно возвращает объекты в этом поле. Я хочу исправить идентификатор companyID в качестве значения и сравнить его с другой строкой, чтобы узнать, разрешен ли запрос.

Проблема в том, я получаю значение emited как это в Юникод:

u'''CM-dummycompany''' 

CompareString я получил от другого cbobject, как это:

u'CM-dummycompany' 

Когда я сравнить их тоже не удается. Значит, любая идея, как правильно сравнивать?

Я попробовал это с == и is. Я также попытался привести его в строку, а затем сравнить, но это не так, потому что у меня есть символы несоответствия, такие как äöü

Или лучше вопрос, почему двойные кавычки добавляются к испускаемому значению?

ответ

1

Хорошо, я нашел решение в вопросе Tracker Couchbase:

Spatial views return value is double encoded

Так что для всех, кто также сталкивается с этой проблемой: Проблема в том, что в пространственных представлений, значение получает двойной кодированный , Это означает, что если вы вернете число, оно станет строкой. И строка становится строкой с экранированными кавычками.

Фактически они говорят, что он уже исправлен в версии 3.0.1, но я уже обновлен, и проблема все еще существует.

Мой обходной путь был просто удалить кавычки с помощью re:

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

Полезная информация. –

0

Просто знаю, что в этой публикации геопространственных мнения в Couchbase считаются экспериментальными и не готовый к производству. Официальная поддержка не должна наступать, по крайней мере, на следующие два основных выпуска.

Смежные вопросы