带有数组

时间:2017-02-10 22:35:16

标签: javascript couchdb pouchdb couchdb-2.0

好的,我的问题是我有一个多键视图,它有效。

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是我的新数组。通过将我的地图函数更改为emit([docu.key1, docu.key2, docu.key3, [docu.key4]], docu);,我有点运气,但这仅适用于数组中只有一个项目,并且我需要它来处理数组中的多个项目。

我无法弄清楚如何设置我的视图或查询以在key4数组中使用多个项目。

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

总结:

  • 我添加新的key4数组之前,我的视图/查询有效。
  • 如果key4数组中包含一个项目,则视图/查询有效。
  • 我需要它来处理key4数组中的所有项目。
  • 我尝试了很多东西,可以/不能让它发挥作用。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

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