查询 PouchDB 中的嵌套对象
Querying nested objects in PouchDB
我在谷歌上搜索了一些示例和教程,但找不到适合我的案例的任何明确示例。
我从服务器收到这样的 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',
}
]
}
];
我想查询例如:"get heroes with equipment type of bolas"
它应该 return 数组中的两个英雄对象。
我知道这是不对的,但我想做的是形成一个像这样的地图函数:
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 看起来更复杂并且能够进行此类查询。
提前谢谢大家
你的地图函数应该是:
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 :)
我在谷歌上搜索了一些示例和教程,但找不到适合我的案例的任何明确示例。
我从服务器收到这样的 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',
}
]
}
];
我想查询例如:"get heroes with equipment type of bolas" 它应该 return 数组中的两个英雄对象。
我知道这是不对的,但我想做的是形成一个像这样的地图函数:
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 看起来更复杂并且能够进行此类查询。
提前谢谢大家
你的地图函数应该是:
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 :)