我在电子应用程序上使用 pouchDb。数据在传递给 pouchDb 之前存储在 postgres 数据库中。在某些情况下,不难弄清楚如何以文档方式构造数据。
我主要关心的是关系。例如:
我有数据类型项目,项目有很多事件。现在我在每个事件上都有一个名为 project_id 的字段。因此,当我想获取 ID 为“project/1”的项目的事件时,我会这样做
_db.allDocs({
include_docs: true,
startkey: 'event',
endkey: 'event\uffff'
}).then(function(response){
filtered = _.filter(response['rows'], function(row){
return row['doc']['project_id'] == 'project/1'
});
result = filtered.map(function(row){
return row['doc']
})
});
我读过那allDocs
是性能最高的 API,但是,在这种情况下查看更方便吗?
另一方面,当我显示所有项目的列表时,每个项目都需要显示它拥有的事件数。在这种情况下,我似乎必须再次运行 allDocs,include_docs: false
以便计算项目的事件数。
有观点会改善这种情况吗?
另一方面,我正在考虑在项目文档中创建一个包含所有事件 ID 的数组,以便我可以轻松计算它有多少事件。在这种情况下,我应该使用 allDocs 吗?有没有办法将一组 Ids 传递给 allDocs?或者在该数组上使用循环并为每个 id 调用 get(id) 会更好吗?
这种其他方式是否比第一种方式更高效?
谢谢!