无法使用Relational-Pouch插件进行过滤或订购

时间:2018-12-23 10:21:24

标签: database angular couchdb pouchdb relational-pouch

自从最近两天以来,我一直在尝试使用插件Relational-pouch对pouchdb中的文档进行排序和/或过滤,但由于某些原因它无法正常工作

我已经阅读了Pouch DB的官方文档中的文档,并按照以下步骤进行操作,即,我创建了一个索引,然后调用了find('type',options)方法,该方法具有以下代码中给出的文档类型和选项,但结果是get是按id排序的,棘手的部分是我可以在选项中传递“ limit”选项,它可以工作,但是在同一位置,“ sort”选项似乎不起作用,如果有人可以指出,这将是有帮助的我到一个可以在关系袋中进行过滤的地方,官方的GitHub文档将无济于事

get() {
this.db.createIndex({
  index: {
    fields: ['title']
  }
}).then((data)=>{
  this.db.rel.find('content', {
    limit : 1,
    sort: ['title']
  }).then((data)=>{console.log(data)});
}).catch(console.log)
}
// the schema applied
this.db.setSchema([
  {singular: 'user', plural: 'users', relations: { contents: {hasMany: 'content'}}},
  {singular: 'content', plural: 'contents', relations: { user: {belongsTo: 'user'}}}
]);

我期望按标题排序的结果(我什至尝试按创建顺序排序),但得到以下信息:

{title: "Test title 5", description: "Test description 5", created: "2018-12-20T02:44:59.127Z", modified: "2018-12-20T02:44:59.127Z", id: "2A57FB9C-4E29-590C-AA4E-751FAA0F0AD9", …}

{title: "Test title 2", description: "Test description 2", created: "2018-12-19T03:40:56.302Z", modified: "2018-12-19T03:40:56.302Z", id: "2F568411-D955-42ED-9622-1C191AD6532D", …}

{title: "Test title 4", description: "Test description 4", created: "2018-12-20T02:44:51.654Z", modified: "2018-12-20T02:44:51.654Z", id: "319D2427-5862-477A-AAEA-CB2536C2430E", …}

{title: "Test title 1", description: "Test description 1", created: "2018-12-19T03:40:50.166Z", modified: "2018-12-19T03:40:50.166Z", id: "4D982FA6-99A9-4545-BC10-CBEF9530B3FA", …}

{title: "Test title 6", description: "Test description 6", created: "2018-12-20T02:45:06.927Z", modified: "2018-12-20T02:45:06.927Z", id: "7C4637AB-B626-E5FD-9353-5A7F926B98ED", …}

1 个答案:

答案 0 :(得分:0)

如果您希望检索大量记录,则只有一种好方法:allDocs

relational-pouch用于处理与一个或最多几个个别记录相关的少量记录。

这两个工具非常兼容,并且经过一些试验和计划,可以很好地协同工作。我使用allDocs处理大型数据集,使用live-find在浏览器中呈现列表,并且当最终用户选择单个项目时,使用db.rel.find()检索它的相关记录以进行显示/更改。在这种情况下,排序根本不是问题。

换句话说...如果您需要排序和过滤,则可能应该首先获取主要(主)记录的简短列表,然后再使用它们在db.rel.find()中的键属性来检索其次要记录(支持,相关,详细)记录。

要强调... allDocs 应该是您的主要工具,并且您的设计决策应重点关注它,而不是关系袋。

更新:2018/12/23 16:00 EST

如果您要做的只是确保记录按日期顺序,只需确保您的ID按日期顺序...

{id: "Test_2_20181219034050166", title: "Test title 1", description: "Test description 1", created: "2018-12-19T03:40:50.166Z", modified: "2018-12-19T03:40:50.166Z", …}

查看有关以引号db.rel.find(type)进行排序的参考。您可以使用类方法db.rel.makeDocID(parsedID)生成此类专用ID。