2016-02-02 4 views
0

У меня возникают проблемы с передачей параметров на просмотр через модуль js couchbase узла. Основная проблема заключается в том, что я не знаю, какой вопрос задавать Google, чтобы получить ответ, который я ищу. Я хотел бы получить из представления конкретный объект, основанный на ключе, который я получаю от пользовательского интерфейса.Узел js couchbase запрос на вызов, сопоставляющийся с представлением couchbase

Например, у меня есть список магазинов с номерами магазинов 111, 222 и 333. Если пользователь дает мне номер магазина 222, я хотел бы только вернуть его, а не возвращать его, а затем фильтровать внутри моего js-кода узла.

код узла можно расслоение плотной выглядит следующим образом:

var query = ViewQuery.from('dev_store', 'store').key(storeNum); 
myBucket.query(query, function (err, results) {...}; 

я получил, что из ViewQuery апи смешивается с this question. Однако я не могу понять, как получить доступ к этому ключевому параметру, когда я нахожусь в представлении, чтобы отфильтровать мои результаты только в одном хранилище.

Я протестировал свой взгляд, и он отлично работает, пока я просто получаю список всех магазинов. Я читал о сокращениях, но я не видел, где они действительно написали/назвали.

Я пробовал получить доступ к нему, выполнив doc.key или добавив ключ к функции просмотра, но я думаю, что мое ограниченное понимание структуры View причиняет мне боль здесь.

Вопрос: Учитывая ключ, как мне вернуть из представления только строку, относящуюся к этому ключу?

EDIT: Вот мое мнение:

function (doc, key, meta) { 
    doc.midLevel.forEach(function (reg) { 
     reg.midLowerLevel.forEach(function (dis) { 
      dis.lowestLevel.forEach(function (store) { 
       emit(store.store_nbr, null); 
      }) 
     }) 
    }) 
} 

С этой точки зрения он излучает каждый магазин на самом низком уровне. Как видно из кода узла js, я передал ему ключ. Я хотел бы использовать этот ключ, чтобы создать условие того, что испускает.

Например, если есть номера с номерами 1-100, а узел js передает число 45, возможно ли мне получить доступ к «45» в представлении, чтобы создать это условие?

+0

Что такое идентификатор объекта документа? если у вас есть что-то вроде store :: 222 как objectID для этого документа, тогда вы просто получите этот ключ. Нет необходимости в просмотре и намного быстрее. – Kirk

+0

Таким образом, уровень хранилища будет на 3 уровня глубже, чем корневой объект документа.Технически примером objectID для документа будет алфавитная буква A-M. Итак, я ищу, чтобы иметь возможность испускать только определенный подиндекс документа, основанный на данном вводе. Я думаю, что это ответит на ваш вопрос, если не сообщит мне. – discodane

+1

Извините, я читаю этот комментарий после отправки моего ответа. Каков ваш идентификатор документа? Почему вы храните произвольно глубокие объекты как отдельные документы, а не проецируете их на глубокие объекты на интерфейсе? У вас возникли проблемы с пониманием того, что можно дать в качестве ответа, основанного на вопросе. – theMayer

ответ

1

Вопрос: Учитывая ключ, как мне вернуть из представления только строку, относящуюся к этому ключу?

На первый взгляд, этот вопрос не имеет отношения к виду. Представления абсолютно не предназначены для возврата объектов на основе ключа объекта. Скорее, представление предназначено для индексации определенных свойств хранимых объектов, так что объекты могут быть объединены в какой-то список.

Чтобы вернуть документ на основе ключа, вы должны выполнить простую операцию get. Запрос запроса в этом сценарии фактически снижает производительность, поскольку к виду должно быть обращено с диска. Объект get с точки зрения в отличие от ОЗУ на порядок или медленнее, чем простое чтение.

Ответ: используйте get, а не вид.

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