2015-12-22 3 views
3

Я реализую сайт с базой данных dynamodb + nodejs. Я использую Vogels.js на стороне сервера для запроса dynamodb и отображения результатов на веб-странице. Поскольку мой запрос возвращает много результатов, я хотел бы вернуть только результаты N (например, 5) обратно пользователю и возвратить следующие N результатов, когда пользователь запросит больше.Использование vogels js для реализации разбивки на страницы

Есть ли способ, которым я могу запустить два запроса vogels, второй запрос начинается с того места, где остановился первый запрос? Благодарю.

ответ

7

Да, Vogels полностью поддерживает нумерацию страниц на обоих запросов и операций сканирования.

Например:

var Tweet = vogels.define('tweet', { 
    hashKey : 'UserId', 
    rangeKey : 'PublishedDateTime', 
    schema : { 
    UserId   : Joi.string(), 
    PublishedDateTime : Joi.date().default(Date.now), 
    content   : Joi.string() 
    } 
}); 

// Fetch the 5 most recent tweets from user with id 555: 
Tweet.query(555).limit(5).descending().exec(function (err, data) { 
    var paginationKey = data.LastEvaluatedKey; 

    // Fetch the next page of 5 tweets 
    Tweet.query(555).limit(5).descending().startKey(paginationKey).exec() 
}); 
+0

Спасибо. Райан. Он работает как шарм –

+0

Это замечательно для страницы 'next' в разбивке на страницы. Есть ли какое-либо решение для «предыдущей» страницы? – Srle

+0

Что означает «LastEvaluatedKey»? – jasmo2

3

Да, возможно, у DynamoDB есть что-то, называемое «LastEvaluatedKey», которое будет служить вашей цели.

Шаг 1) Query ваша таблица с опцией "Limit" = количество записей

относятся: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

Шаг 2) Если запрос содержит больше записей, чем "Предельное значение", DynamoDB возвратит «LastEvaluatedKey», который вы можете передать в своем следующем запросе, как «ExclusiveStartKey», чтобы получить следующий набор записей, пока нет никаких записей не осталось

относятся: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan.Query

Примечание: Имейте в виду, что, чтобы получить предыдущий набор записей, которые, возможно, придется хранить все «LastEvaluatedKeys» и осуществить это на уровне приложений

+0

Спасибо за ответ! Я использую Vogels JS для доступа к dynamoDB вместо Amazon DynamoDB JS API, и мне интересно, как это сделать в Vogels. –

+0

Я предполагаю, что вы используете этот https://github.com/ryanfitz/vogels, это всего лишь картограф, и все, что я упоминал, присутствует в нем. –

+0

Да. Я использую github.com/ryanfitz/vogels. Я не нашел, как указать LastEvaluatedKey в документе vogels. Прокопайте код, чтобы увидеть, как он работает. Спасибо за ваш ответ. –

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