CouchDB 无法在map函数中使用sort()

uidvcgyl  于 2022-12-09  发布在  CouchDB
关注(0)|答案(1)|浏览(92)

我的couchdb中的文档如下所示:

{ 
   docType: "event",
   tags: ["bb","aa","cc"],
   ...
  }

我希望我的couchdb视图函数发出一个排序的标签数组,所以我尝试:

function(doc) {
    if (doc.docType == 'event') {
        if (doc.tags.length > 0) {
          emit(doc.tags.sort(), doc._id);
        }
     }
  }

但是,这个(.sort())并没有如预期般运作:结果只显示文档,其中tags数组只有一个实体(tags.length = 1)。

bkhjykvo

bkhjykvo1#

我在couchDB Slack通道的帮助下找到了答案。sort()想改变原始数组中元素的位置,这不是view函数的目的。你可以看到每个数组的javascript引擎的异常,要排序的数组有多个条目。需要在之前将couchdb的日志级别切换到“debug”。
使用spread运算符创建一个新数组解决了这个问题:

emit([...doc.tags].sort(), doc._id);

相关问题