我有一份具有以下结构的文件:
{
tags: ['bbb', 'aaa', 'ddd', 'ccc']
}
我想创建一个视图,它将有序标签数组的哈希值作为键返回。我的方法是对tags数组进行排序,然后计算排序数组的哈希值。
我正在努力解决的问题是如何在CouchDB视图的map函数中对数组进行排序?似乎Array#sort()方法不起作用/不可用。
我不能假设tags数组存储为有序数组。
答案 0 :(得分:4)
我明白了。问题是我试图对tags数组进行排序,但这在CouchDB中受到限制,因为无法修改文档属性。
因此,我必须'克隆'数组,然后对新创建的数组进行排序。
// map.js
function(doc) {
// create sorted array
var tagsCopy = doc.tags.slice();
tagsCopy.sort();
// calculate hash
var hash = '';
for (var idx in tagsCopy) {
hash += tagsCopy[idx];
}
return require('views/lib/sha1').hex(hash);
}
views/lib/sha1
是CouchDB提供的sha1.js
文件。