Упростите ответ JSON Couchdb

Я храню данные местоположения в Couchdb, и я ищу способ получить массив только значений, а не ключ: значение для каждой записи. Например:

Текущий ответ

{"total rows": 250, "offset": 0, "rows":[
    {"id": "ec5de6de2cf7bcac9a2a2a76de5738e4", "key": "user1", "value": {"city": "San Francisco", "address":"1001 Bayhill Dr"},
    {"id": "ec5de6de2cf7bcac9a2a2a76de573ae4","key": "user1", "value": {"city": "Palo Alto", "address":"583 Waverley St"}
    ... (etc).
]}

Мне действительно нужно:

[{"city": "San Francisco", "address":"1001 Bayhill Dr"},
 {"city": "Palo Alto", "address":"583 Waverley St"},
 ...]

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

Спасибо.

Ответы

Ответ 1

Вы можете использовать _ show и _list функции, они берут либо документ, либо представление (соответственно) и могут отправлять обратно преобразованный ответ в любой формат, который вам нужен. (в данном случае JSON)

Обновление: Я провел простой тест с данными, которые вы предоставили здесь, на моем собственном CouchDB. Здесь функция списка, в которой я закончила писать. Настройте его в соответствии с вашими потребностями.:)

function (head, req) {
    // specify that we're providing a JSON response
    provides('json', function() {
        // create an array for our result set
        var results = [];

        while (row = getRow()) {
            results.push({
                city: row.value.city,
                address: row.value.address
            });
        }

        // make sure to stringify the results :)
        send(JSON.stringify(results));
    });
}