我正在使用pouchdb和couchDb作为我的离线第一个移动应用程序的数据库做出反应。
https://pouchdb.com/2015/04/05/filtered-replication.html
基于以上内容,我配置了pouchdb并与couchdb同步。我正在进行基于用户的过滤。当用户注销并再次登录时,db值可用。这样做的最佳设计方法是什么?
我可以参考哪个例子?
configurePouchdb(user) {
var db = new PouchDB('dbname', {adapter: 'websql'});
var serverSideFilter = {
_id: "_design/app",
filters: {
"by_user": function (doc, req) {
return doc._id === '_design/app' || (doc.userId != undefined && doc.userId === req.query.userId);
}.toString()
}
};
db.put(serverSideFilter).then(function (doc) {
// design doc created!
}).catch(function (err) {
// if err.name === 'conflict', then
// design doc already exists
});
db.sync('http://127.0.0.1:5984/dbname', {
live: true,
retry: true,
filter: 'app/by_user',
query_params: {"userId": user}
});
return db;
}
答案 0 :(得分:4)
据我所知,CouchDB或PouchDB中的视图都没有req参数,因为视图只生成一个在用户之间不同的索引。
正如https://pouchdb.com/2015/04/05/filtered-replication.html中所述,不建议使用过滤后的复制而不是正确的身份验证。来自https://github.com/nolanlawson/pouchdb-authentication#couchdb-authentication-recipe
中PouchDB的一个主要提交者有一个很好的秘诀无论如何,PouchDB API文档中的过滤复制指南非常好:https://pouchdb.com/api.html#filtered-replication。