Parse.com: Как разбивать результаты на Parse.Query?

В настоящее время я запрашиваю результаты с помощью Javascript Parse.Object.extend и шаблонизирую эти результаты в списке с помощью underscoreJS.

Вот код, который запрашивает объект Parse и добавляет объекты в шаблон подчёркивания.

var Assignment = Parse.Object.extend("Assignments");
var query = new Parse.Query(Assignment);
query.descending('updatedAt');  

query.find({
    success: function(results) {
        console.log("Success");
            var tableTemplate = $("#list-template").html();
$("#assignmentdisplay").html(_.template(tableTemplate,{results:results}));

    },
    error: function(error) {
        alert("Error: " + error.code + " " + error.message);
    }
});

И это шаблон поддерева.

<script type="text/html" id='list-template'>
                <% _.each(results,function(result){ %>
            <li id="list-group-item">
        <h4 class="list-group-item-heading"><%= result.get("Title") %></h4>
                    <p class="list-group-item-text"><%= result.get("Content") %></p>
                    <p class="list-group-item-text"><%= result.get("Categories") %></p>
                    </li>
    <% }) %>

</script>

Тем не менее, я не понимаю, как разбивать результаты на парсы и подражание.

Я пробовал базовый paginator, но я не очень хорош с Backbone, и я просто не понимаю, как объединить его с запросами Parse.

Если мне нужно использовать другое решение для шаблонов или другое решение для разбивки на страницы, кроме базового paginator, это также прекрасно. Все будет полезно, я довольно застрял в этой разбивке на страницы.

EDIT:

Parse.com имеет skip() и limit(), как-то это называется полезным, но я не знаю, как его реализовать.

Ответ 1

Вот только абстрагированный пример разбивки на страницы. Концепция должна быть проиллюстрирована, и вы можете настроить ее в соответствии с конкретной ситуацией.

// Set the current page number usually zero works great to start
// This is an arbitrary ex. but this value will come from your page (e.g. link etc.)
var page = 0;

// How much you want on a page
var displayLimit = 50;

// Get the count on a collection
var count;
myCollection.count().then(function(result){ count = result; });

// Your query
var Assignment = Parse.Object.extend("Assignments");
var query = new Parse.Query(Assignment);
query.descending('updatedAt');
query.limit(displayLimit);
query.skip(page * displayLimit);
// So with this above code, on page 0, you will get 50 results and skip 0 records.
// If your page var is 1, you'll skip the first 50 and get 50 results starting at 51
// So on so forth...
query.find()...

Таким образом, ваши ссылки могут содержать данные страницы, закодированные в нем, когда вы нажимаете на нее, ваша функция будет знать, на какую страницу перейти и захватить соответствующие. Концепция такая же для next/prev. В следующий раз вы просто выполните page++, а в Prev вы можете сделать page--.

Надеюсь, что это поможет.

EDIT:

Если вы хотите сделать что-то вроде отображения Assignments 51-100 из 237, вам нужно сделать .count(), чтобы получить общее количество записей перед началом работы.

Чтобы получить начальный номер, это просто что-то вроде (page * displayLimit) + 1 Чтобы получить конечный номер, имейте в виду, что если вы находитесь на последней странице, у вас может не быть 50 записей или что бы вы не сделали с displayLimit.