我使用PhoneGap和JQM开发应用程序。我还将PouchDB用作设备端的数据库,并将CouchDB与服务器端的数据库结合使用。
我想知道是否可以使用PouchDB向CouchDB发送查询。例如,我想要一个登录机制。所以我需要检查服务器端的凭据。我的第一个想法是向PHP文件发送一个ajax请求,该文件将检查CouchDB数据库中的凭据。 我会为注册做同样的事情:通过Ajax将数据发送到PHP以在我的服务器数据库中创建新记录。
然而,由于PouchDB和CouchDB非常接近,也许可以不使用ajax查询和PHP文件来完成它。也许可以从PouchDB向CouchDB发送查询(读取和写入)。 有可能吗?
谢谢。
答案 0 :(得分:3)
您可以将PouchDb用作CouchDb驱动程序
var db = new PouchDB('https://myserver:5984/mdb');
// this gives you the PouchDB API but it will request data from the CouchDb Server
有一个pouchdb插件,它为pouchdb api提供了一些身份验证方法:
var db = new PouchDB('http://mysite:5984/mydb');
db.login('batman', 'brucewayne').then(function (batman) {
console.log("I'm Batman.");
return db.logout();
});
以下是它混合的方法:
为了防止浏览器HTTP基本身份验证模式对话,我们必须对使用PouchDB的方式有所了解。为了防止对CouchDB的rouge未经身份验证的请求(用于检查远程数据库是否存在),请在Pouch的构造函数选项中传递skipSetup:true。其次,要对_session进行身份验证请求,请将HTTP基本授权标头添加到db.login()的AJAX选项中。
var user = {
name: 'admin',
password: 'admin'
};
var pouchOpts = {
skipSetup: true
};
var ajaxOpts = {
ajax: {
headers: {
Authorization: 'Basic ' + window.btoa(user.name + ':' + user.password)
}
}
};
var db = new PouchDB('http://localhost:5984/test', pouchOpts);
db.login(user.name, user.password, ajaxOpts).then(function() {
return db.allDocs();
}).then(function(docs) {
console.log(docs);
}).catch(function(error) {
console.error(error);
});