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

Not able to use sort() inside of map function

我的 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.length = 1).

我在 couchDB Slack 频道的帮助下找到了答案。 sort() 想要改变元素在原始数组中的位置,这不是视图函数的意图。您可以看到每个数组的 javascript 引擎异常,要排序并且具有多个条目。之前需要将couchdb的日志级别切换为“debug”。

使用扩展运算符创建新数​​组解决了问题:

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