寻找索引pouchDB的方法
当我有多个维度
时找不到索引的方法这是我的文档客户端示例
请注意,客户可能会有一些发票
{
clientId : 2
clientName : 'toto'
phoneNumber : '2342342'
invoices : [
{
invoiceNumber : '12312313' ,
Amount : 234242,
barCode : '1234324',
},
{
invoiceNumber : '12312313' ,
Amount : 234242,
barCode : '1234324',
}
]
}
{
clientId : 3
clientName : 'tata'
phoneNumber : '2342342'
invoices : [
{
invoiceNumber : '3542435' ,
Amount : 234242,
barCode : '1234324',
},
{
invoiceNumber : '235423' ,
Amount : 234242,
barCode : '23454235',
}
]
}
我希望能够按发票编号和条形码编号找到客户
所以索引那些很重要
感谢您的帮助
我看过https://pouchdb.com/api.html#create_index 和https://pouchdb.com/2014/05/01/secondary-indexes-have-landed-in-pouchdb.html
到目前为止没有多少运气
答案 0 :(得分:1)
...
emit()
函数可以在map函数中被称为多次,以便在单个文档的视图结果中创建多个条目......
现在我们将在map函数中多次使用emit()
。此外,我们将发出数组以同时使用invoiceNumber
和barCode
作为索引,如下所示:
var myIndex = {
_id: '_design/my_index',
views: {
'my_index': {
map: function (doc) {
for(var i=0, length=doc.invoices.length; i<length; i++){
emit(
// emit array of invoiceNumber and barCode as key:
[doc.invoices[i].invoiceNumber, doc.invoices[i].barCode],
// emit array of clientId and clientName as value
// Actually, value can be whatever you want:
[doc.clientId, doc.clientName]
);
}
}.toString()
}
}
};
现在让PUT
我们的上述设计文档并使用PouchDB进行查询:
pouch.put(myIndex).then(() => {
// query the index
return pouch.query('my_index', {key: ['12312313','1234324']});
}).then(result => {
// found docs with invoiceNumber === '12312313' and barCode === '1234324'
console.log('Result: ', result)
});
另请查看this similar answer。