Я пытаюсь сделать следующее: у меня есть локальная база данных (с использованием PouchDB), я проверяю, зарегистрирован ли пользователь (с функцией входа в систему с помощью функции pouchdb), и если true, я синхронизирую локаль db с удаленный один.Создание базы данных Pouchdb no_db_file
К сожалению, когда я пытаюсь создать новую базу данных на CouchDB (я хочу один db для каждого пользователя), я всегда получаю ошибку {"error": "not_found", "reason": "no_db_file"}. Я видел, что это общая ошибка, описанная в документации PouchDB (https://pouchdb.com/guides/databases.html#remote-databases), но CORS включен, и я не могу понять, в чем проблема.
Моя конфигурация CouchDB является:
я делаю логин следующим образом:
var user = {
name: 'name',
password: 'password'
};
var url = "http://ip/";
var pouchOpts = {
skipSetup: true
};
var ajaxOpts = {
ajax: {
headers: {
Authorization: 'Basic ' + window.btoa(user.name + ':' + user.password)
}
}
};
var db = new PouchDB(url+'auth', pouchOpts);
db.login(user.name, user.password, ajaxOpts).then(function() {
return db.allDocs();
}).then(function(docs) {
//HERE I TRY TO CREATE THE NEW DATABASE
pouchDBService.sync(url+"newDatabase", user);
}).catch(function(error) {
console.error(error);
});
И в моем pouchDBService у меня есть:
var database;
//I call this function as app starts
this.setDatabase = function(databaseName) {
database = new PouchDB(databaseName, {
adapter: 'websql'
});
}
this.sync = function(remoteDatabase, user) {
var remoteDB = new PouchDB(remoteDatabase, {
auth: {
username: user.name,
password: user.password
},
skip_setup: true //without this I get the login popup! Why if I'm passing the auth params???
});
remoteDB.info().then(function (info) {
console.log(info);
database.sync(remoteDB, {live:true, retry: true})
})
}
Есть ли что-то не так? Любая помощь приветствуется.
Благодаря
Благодарим за помощь. Я думаю, что couchperuser станет решением моей проблемы. Во всяком случае, я не понимаю, как PouchDB должен работать, поскольку я думаю, что никто не оставит свою базу данных открытой миру. –
PouchDB имеет множество приложений. Сценарий с одной базой данных для каждого пользователя является одним из многих возможных применений. Еще один будет автономным кешем частей базы данных сервера. В этом случае вы просто будете использовать одностороннюю репликацию с сервера на клиент. Или для обмена общедоступными данными вы просто синхронизируете базы данных всех клиентов с одной базой данных сервера. Какими бы ни были ваши требования, существует множество возможных решений. Некоторые из них могут быть решены путем подключения PouchDb к CouchDb, но другие могут быть решены только с помощью третьего уровня, такого как Node API. –