【问题标题】:CouchDB multikey view with an array带有数组的 CouchDB 多键视图
【发布时间】:2017-02-17 16:25:30
【问题描述】:

好的,所以我的问题是我有一个多键视图,它可以工作。

function (docu) {
  if(!docu.deleted){
    emit([docu.key1, docu.key2, docu.key3], docu);
  }
}

我正在尝试向这个已经多键的数组添加另一个键。我试图添加的键是一个字符串值数组,

[
"test",
"test2"
]

我正在使用PouchDB 及其内置的查询方法查询我的视图,代码如下。

database.query("views/viewTest", {
    startkey: [key1, key2, key3, key4],
    endkey: [key1, key2, key3, key4],
    reduce: false
}, function (err, res) {
    if (err) {
        console.log(err);
        alert(err);
    } else {
        console.log(res);
    }
});

key4 是我的新数组。通过将 map 函数更改为 emit([docu.key1, docu.key2, docu.key3, [docu.key4]], docu);,我的 map 函数有点运气,但这仅适用于数组中只有一项的情况,并且我需要它来处理数组中的多个项。

我不知道如何设置视图或查询以利用 key4 数组中的多个项目。

我尝试使用startkeyendkey 进行查询,其中key4endkey 推入了{},但这返回了所有内容。我只想要 key4 数组中返回的值,只要它们也与其他键匹配。

总结一下:

  • 在我添加新的 key4 数组之前,我的视图/查询工作正常。
  • 如果 key4 数组中有 ONE 项,则视图/查询有效。
  • 我需要它来处理 key4 数组中的所有项目。
  • 我尝试了多种方法,但无法/无法使其正常工作。

有什么建议吗?

【问题讨论】:

    标签: javascript couchdb pouchdb couchdb-2.0


    【解决方案1】:

    为什么不使用将 key4 连接到 [key1, key2, key3] 的唯一数组?

    function (docu) {
      if(!docu.deleted){
        var key = [docu.key1, docu.key2, docu.key3].concat(doc.key4);
        emit(key, docu);
      }
    }
    

    【讨论】:

    • 他们的问题是文档中的key4 将始终是一个项目,String,而当我在start/endkey 中搜索时,它将是Strings 的Array .所以我需要一种方法让map 能够获取输入并测试文档中的key4 是否在start/endkey key4 内,然后发出这些。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2013-04-24
    相关资源
    最近更新 更多