Couchdb 发出已排序数组的哈希

Couchdb 发出已排序数组的哈希,couchdb,Couchdb,我有一份结构如下的文件: { tags: ['bbb', 'aaa', 'ddd', 'ccc'] } 我想创建一个视图,它返回排序标签数组的散列作为键。我的方法是对标记数组进行排序,然后计算排序数组的哈希值 我正在努力解决的问题是如何在CouchDB视图的map函数中对数组进行排序?Array#sort()方法似乎不起作用/不可用 我不能假设标签数组是以排序数组的形式存储的。我猜出来了。问题是我试图对标记数组进行排序,但这在CouchDB中受到限制,因为无法修改documents属性

我有一份结构如下的文件:

{
   tags: ['bbb', 'aaa', 'ddd', 'ccc']
}
我想创建一个视图,它返回排序标签数组的散列作为键。我的方法是对标记数组进行排序,然后计算排序数组的哈希值

我正在努力解决的问题是如何在CouchDB视图的map函数中对数组进行排序?Array#sort()方法似乎不起作用/不可用


我不能假设标签数组是以排序数组的形式存储的。

我猜出来了。问题是我试图对标记数组进行排序,但这在CouchDB中受到限制,因为无法修改documents属性

因此,我必须“克隆”阵列,然后对新创建的阵列进行排序

// 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
文件。

我找到了它。问题是我试图对标记数组进行排序,但这在CouchDB中受到限制,因为无法修改documents属性

因此,我必须“克隆”阵列,然后对新创建的阵列进行排序

// 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
文件。

您可以发布map函数的源代码吗?为什么要哈希数组?你可以把它作为一个键。你可以发布你的映射函数的源代码吗?为什么你想散列数组?你可以把它当作钥匙。