вывести хэш отсортированного массива - PullRequest
1 голос
/ 04 ноября 2011

У меня есть документ со следующей структурой:

{
   tags: ['bbb', 'aaa', 'ddd', 'ccc']
}

, и я хочу создать представление, которое возвращает хэш массива отсортированных тегов в качестве ключа.Мой подход заключается в сортировке массива тегов и последующем вычислении хэша отсортированного массива.

Проблема, с которой я сталкиваюсь, заключается в том, как отсортировать массив в функции отображения представления CouchDB?Кажется, что метод Array # sort () не работает / недоступен.

Я не могу предположить, что массив тегов хранится как отсортированный массив.

1 Ответ

4 голосов
/ 07 ноября 2011

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

Поэтому мне пришлось «клонировать» массив, а затем выполнить сортировку для новогосоздан один.

// map.js
function(doc) {
    // create sorted array
    var tagsCopy = doc.tags.slice();
    tagsCopy.sort();

    // calculate hash
    var hash = '';
    for (var idx in tagsCopy) {
        hash += tagsCopy[idx];
    }
    return require('views/lib/sha1').hex(hash);
}

Где views/lib/sha1 - это файл sha1.js, предоставленный CouchDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...