对 get() 的结果进行排序
Sort results of get()
我有一个要输出的 CouchDB 文档 "date"
:
{
"_id": "accounts",
"accounts": [
{
"name": "_name.1",
"date": 1524336565172
},
{
"name": "_name.2",
"date": 1524336565173
},
{
"name": "_name.3",
"date": 1524336565171
}
}
现在我正在使用以下 PouchDB,它填充了 <ul>
,但显然顺序不正确:
localDB.get('accounts').then(function(result){
$.each(result.accounts, function(i, value) {
$('ul').append('<li data-date="' + value.date + '">' + value.name + '</li>');
});
});
我正在寻找的输出是:
<li data-date="1524336565171">_name.3</li>
<li data-date="1524336565172">_name.1</li>
<li data-date="1524336565173">_name.2</li>
提前致谢! :)
如果您有多个文档并且您打算根据文档字段对文档进行排序,CouchDB 索引就可以工作。您有一个 单个 文档,因此您不能使用 CouchDB 索引,您必须在代码逻辑中对字段进行排序。
拥有多个文档可能比将所有数据都保存在一个文档中更实用。
您可以像这样将单个文档分解为多个文档:
{
"_id": "account 001",
"name": "_name.1",
"date": 1524336565172
}
{
"_id": "account 002",
"name": "_name.2",
"date": 1524336565173
}
{
"_id": "account 003",
"name": "_name.3",
"date": 1524336565171
}
然后您可以在 CouchDB 中创建一个视图函数并通过 date
字段获取文档 indexed/sorted,如下所示:
function (doc) {
if(doc.date && doc.name){
emit(doc.date, doc.name);
}
}
以上视图可以用PouchDB创建。您可以使用 Map/reduce queries or you can use Mango queries.
虽然@user3405291 的回答通常被认为是更好的做法,但您也可以保留现有的文档结构并从您的单一帐户文档创建 view:
function (doc) {
if(doc.accounts) {
doc.accounts.forEach(function(account) {
emit(account.date, account.name);
});
}
}
不过,对于存储帐户,我强烈建议按照其他答案的建议为每个帐户使用一个文档。它更容易扩展,因为帐户可以 updated/deleted 独立。
我有一个要输出的 CouchDB 文档 "date"
:
{
"_id": "accounts",
"accounts": [
{
"name": "_name.1",
"date": 1524336565172
},
{
"name": "_name.2",
"date": 1524336565173
},
{
"name": "_name.3",
"date": 1524336565171
}
}
现在我正在使用以下 PouchDB,它填充了 <ul>
,但显然顺序不正确:
localDB.get('accounts').then(function(result){
$.each(result.accounts, function(i, value) {
$('ul').append('<li data-date="' + value.date + '">' + value.name + '</li>');
});
});
我正在寻找的输出是:
<li data-date="1524336565171">_name.3</li>
<li data-date="1524336565172">_name.1</li>
<li data-date="1524336565173">_name.2</li>
提前致谢! :)
如果您有多个文档并且您打算根据文档字段对文档进行排序,CouchDB 索引就可以工作。您有一个 单个 文档,因此您不能使用 CouchDB 索引,您必须在代码逻辑中对字段进行排序。
拥有多个文档可能比将所有数据都保存在一个文档中更实用。
您可以像这样将单个文档分解为多个文档:
{
"_id": "account 001",
"name": "_name.1",
"date": 1524336565172
}
{
"_id": "account 002",
"name": "_name.2",
"date": 1524336565173
}
{
"_id": "account 003",
"name": "_name.3",
"date": 1524336565171
}
然后您可以在 CouchDB 中创建一个视图函数并通过 date
字段获取文档 indexed/sorted,如下所示:
function (doc) {
if(doc.date && doc.name){
emit(doc.date, doc.name);
}
}
以上视图可以用PouchDB创建。您可以使用 Map/reduce queries or you can use Mango queries.
虽然@user3405291 的回答通常被认为是更好的做法,但您也可以保留现有的文档结构并从您的单一帐户文档创建 view:
function (doc) {
if(doc.accounts) {
doc.accounts.forEach(function(account) {
emit(account.date, account.name);
});
}
}
不过,对于存储帐户,我强烈建议按照其他答案的建议为每个帐户使用一个文档。它更容易扩展,因为帐户可以 updated/deleted 独立。