我想在PouchDB上使用带有查询方法的Linked文档来连接两种类型的文档。
我的代码正在运行,但不是动态的:
const join = (doc) => {
if (doc.mediasId === '3') {
return emit(doc);
}
}
Canvas.query(join, {include_docs: true}).then((data) => {
console.log(data);
this.setState({
canvas: data.rows
});
});
我想用动态数字替换'3'(在测试中)。如果我在我的连接函数上添加数字参数,我有一个错误...
任何人都有想法在链接文档PouchDB上使用动态'id'吗?
谢谢!
答案 0 :(得分:0)
在构建要搜索的索引时,动态密钥不起作用 - 否则系统必须为每个可能的值构建索引。
要构建索引,您将发出一个键和一个值。键是“emit”的第一个参数,值是第二个参数(包含您想要的信息)。
索引按键排序。我不确定你的情况是什么关键 - 但这是你想要找到的东西 - 例如。 “person_name”或“car_colour”。要使用CouchDb“链接文档”功能,您必须在值中发出“_id”并使用“include_docs”选项。 “_id”(“链接”)的值作为第一个文档中的值存在。这允许您通过第一个文档中的键进行搜索,并访问链接的第二个文档的值。
在“查询”的PouchDb documentation中有一个比这更好的描述,这样的例子......
构建索引:
function my_index(doc) {
// join artist data to albums
if (doc.type === 'album') {
emit(doc.name, {_id : doc.artistId, albumYear : doc.year});
}
}
然后查询索引,获取链接文档:
db.query(my_index, {key: "Dark Side Of The Moon", include_docs : true}).then(function (result) {
// handle result
console.log(JSON.stringify(result));
}).catch(function (err) {
console.log(err);
});
“my_index”函数应保存在数据库的设计文档中以提高效率,但最好阅读相关文档。希望这会有所帮助。