首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你是如何在GUN中进行分页的?

你是如何在GUN中进行分页的?
EN

Stack Overflow用户
提问于 2018-02-24 01:25:56
回答 1查看 289关注 0票数 1

像gun.get({startkey,endkey})这样的东西是怎么做的?

前情:https://github.com/amark/gun/issues/479

EN

回答 1

Stack Overflow用户

发布于 2018-02-24 01:27:31

@qwe123wsx @sebastianmacias为延迟道歉!最初发布在:https://github.com/amark/gun/issues/479

wire规范对此有一个协议,但它还没有实现。它看起来像这样:

代码语言:javascript
复制
gun.on('out', {get: {'#': {'>': 'a', '<': 'b'}}});

然而,这还不起作用。相反,我会推荐:

(1)分页行为在不同的应用之间有很大的不同,我们很难创建一个“一刀切”的解决方案,所以如果你能实现自己的*分页并将其作为用户模块提供,那么我们就可以从你的经验中学习(哪些有效,哪些无效),并将最佳解决方案作为核心的一部分。

(2)你的应用程序在没有分页的情况下可能会工作得很好,虽然它可以构建(它的目标是在1.0之后),然后随着你的应用程序变得越来越流行,一旦你需要它并且它是可用的,添加它应该是相当容易的,而不需要太多的重构。

... *如何构建自己的?

在这方面有很多很好的文章,我所见过的最好的一篇是来自Neo4j的关于如何在图形数据库(也适用于枪) https://graphaware.com/neo4j/2014/08/20/graphaware-neo4j-timetree.html中做到这一点的文章。

另一个粗略的想法是基于分页或时间对数据进行建模。因此,不是将所有tweet放入用户的tweet表中,而是用户的tweet表是天(或周)表,然后将tweet放入week表中。现在,当您加载数据时,您可以很容易地扫描/跳过一周,同时它是超级带宽效率。

粗略的伪代码:

代码语言:javascript
复制
function onTweetSend(tweet){
  gun.get('user').get('alice').get('tweets').get(Date.uniqueYear() + Date.uniqueWeek()).set(tweet)
}

function paginateUserTweet(howMany, cb){
  var range = convertToArrayOfUniqueWeekNamesFromToday(howMany);
  var all = [];
  range.forEach(function(week){
    gun.get('user').get('alice').get('tweets').get(week).load(function(tweets){
       all.push(tweets);
       if(all.length < range.length){ return }
       all = flattenArray(all);
       cb(all);
    });
  });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48953233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档