我可以使用 pouch-authentication 插件从节点实例登录 couchDB 到远程数据库,但我不确定如何使用 .sync 方法进行复制,因为它在调用时不使用凭据。在 pouch-authentication 的文档中,它只是简单地说:
“但是 pouchdb-authentication API 将在您的远程上运行 PouchDB 对象,而不是您本地的对象。”
因此,我不断收到未经授权/未经身份验证的凭据的 401 错误。
那么,我该如何进行实时同步呢?下面是我的代码:
const PouchDB = require("pouchdb");
const PouchDBAuth = require('pouchdb-authentication');
PouchDB.plugin(PouchDBAuth)
// Create a new database instance
const localDB = new PouchDB('database')
const remoteDB = await new PouchDB("http://127.0.0.1/database", {skip_setup: true})
remoteDB.logIn('user', '12345678', function (err, response) {
if (err) {
if (err.name === 'unauthorized' || err.name === 'forbidden') {
console.log("4", err)
} else {
console.log("other")
}
}
remoteDB.getSession(function (err, response) {
if (err) {
// network error
} else if (!response.userCtx.name) {
// nobody's logged in
} else {
// response.userCtx.name is the current user
}
localDB.sync(remoteDB, {
live: true
}).on('change', function (change) {
// yo, something changed!
console.log("Yo, something changed")
}).on('error', function (err) {
console.log("Yo, we got an error", err)
// yo, we got an error! (maybe the user went offline?)
});
})
})
在
PouchDB Authentication
包概述的末尾有:
Since version 1.0.0, this plugin does support Node.js.