2015-12-22 28 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'頁面非常有用。有沒有開箱即用的'previous'頁面解決方案? – Srle

+0

'LastEvaluatedKey'意味着什麼? – jasmo2

3

是的,有可能的話,DynamoDB有一些名爲「LastEvaluatedKey」的東西可以滿足你的目的。

步驟1)查詢您的表選項 「限制」=記錄

數是指: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。我沒有找到如何在vogels的文檔中指定LastEvaluatedKey。將深入代碼,看看它是如何工作的。謝謝您的回覆。 –