gpt4 book ai didi

javascript - 查询 PouchDB 中的嵌套对象

转载 作者:行者123 更新时间:2023-11-30 17:04:28 26 4
gpt4 key购买 nike

我用谷歌搜索了一些示例和教程,但找不到适合我的案例的任何明确示例。

我从我的服务器收到一个 JSON 响应,如下所示:

var heroes = [
{
id: 5,
name: 'Batman',
realName: 'Bruce Wayne',
equipments: [
{
type: 'boomarang',
name: 'Batarang',
},

{
type: 'cloak',
name: 'Bat Cloak',
},

{
type: 'bolas',
name: 'Bat-Bolas',
}
]
},
{
id: 6,
name: 'Cat Woman',
realName: 'Selina Kyle',
equipments: [
{
type: 'car',
name: 'Cat-illac',
},

{
type: 'bolas',
name: 'Cat-Bolas',
}
]
}
];

我想查询例如:“获取装备类型为 bolas 的英雄”它应该在一个数组中返回两个英雄对象。

我知道这是不对的,但我想做的是形成一个像这样的 map 函数:

function myMapFunction(doc) {

if(doc.equipments.length > 0) {
emit(doc.equipment.type);
}

}

db.query(myMapFunction, {
key: 'bolas',
include_docs: true
}).then(function(result) {
console.log(result);
}).catch(function(err) {
// handle errors
});

这可能吗?如果不是,我有什么选择?

P.S:我还检查了 LokiJS 和 underscoreDB。然而,PouchDB 看起来更复杂并且能够进行此类查询。

先谢谢大家

最佳答案

你的 map 功能应该是:

function myMapFunction(doc) {
doc.equipments.forEach(function (equipment) {
emit(equipment.type);
});
}

然后查询,你使用{key: 'bolas'}:

db.query(myMapFunction, {
key: 'bolas',
include_docs: true
}).then(function (result) {
// got result
});

那么你的结果会是这样的:

{
"total_rows": 5,
"offset": 0,
"rows": [
{
"doc": ...,
"key": "bolas",
"id": ...,
"value": null
},
{
"doc": ...,
"key": "bolas",
"id": ...,
"value": null
}
]
}

另外一定要先建立索引!详情在PouchDB map/reduce guide :)

关于javascript - 查询 PouchDB 中的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28273588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com