PocketBase е бекенд с отворен код, състоящ се от вградена SQLite база данни с валидиране на данни, абонаменти в реално време и лесен за използване REST API. Той също така предлага удостоверяване и съхранение на файлове за медийни файлове.
PocketBase е перфектен за проекти, за които предпочитате да не създавате бекенд поради времеви ограничения или удобство, тъй като е напълно преносим и изисква минимална настройка. Той също така се интегрира с популярни технологии като Vue, Svelte, React, Angular и Flutter.
Услуги, предоставяни от PocketBase
PocketBase предоставя повечето от услугите, предлагани от други доставчици на бекенд като SupaBase.
- SQLite база данни: PocketBase включва вградена SQLite база данни. Това се различава от други доставчици на бекенд, които използват по-големи бази данни като PostgreSQL или MySQL. Използването на SQLite прави PocketBase по-лек. Можете също така да се абонирате за събития в база данни в реално време чрез API.
- Удостоверяване: PocketBase поддържа удостоверяване на имейл/парола и OAuth2 удостоверяване чрез Facebook, Google, GitLab и GitHub.
- Съхранение на файлове: Можете да качвате снимки, аудио и видео файлове в локално хранилище или S3 контейнер с помощта на PocketBase.
- Администраторско табло: Таблото за управление на администратора ви позволява да създавате и управлявате колекции в базата данни. Можете също да качвате файлове, да преглеждате регистрационни файлове и да конфигурирате настройката за изпращане на имейли,
Според документите PocketBase може лесно да обслужва 10 000+ едновременни и постоянни в реално време връзки на 6 виртуални частни сървъра, което го прави достъпен избор за бекенд за малки и средни приложения.
Имайте предвид, че PocketBase мащабира само вертикално. Това означава, че трябва да добавите повече CPU и RAM, за да увеличите мощността на обработка. Ако имате голямо приложение, помислете за a бекенд доставчик като Firebase което позволява хоризонтално мащабиране.
Първи стъпки с PocketBase
В момента PocketBase предоставя два SDK:
- SDK за JavaScript, който можете да използвате с рамки на JavaScript като Svelte, React, Vue и Angular.
- SDK за Dart за Flutter приложения.
Най-лесният начин да започнете е да изтеглете PocketBase. Има няколко връзки, така че не забравяйте да изтеглите тази, която е съвместима с вашата среда.
След като го изтеглите, извлечете и отидете до папката pocketbase. След това изпълнете тази команда в терминал:
./pocketbase service
Тази команда трябва да стартира уеб сървър на тези маршрути.
- сървър: http://127.0.0.1:8090/
- REST API: http://127.0.0.1:8090/api/
- Потребителски интерфейс на администратора: http://127.0.0.1:8090/_/
Навигирайте до http://127.0.0.1:8090/_/ URL за създаване на първата ви колекция с помощта на таблото за управление на администратора.
Създаване на колекция в PocketBase
Първият път, когато отворите потребителския интерфейс на администратора, той ще поиска имейл адрес и парола за създаване на администраторски акаунт.
Ето как изглежда потребителският интерфейс на администратора:
Щраквайки върху Нова колекция в потребителския интерфейс на администратора ще отвори панел за събиране, който можете да попълните с подробности, за да създадете нова колекция.
Ето как можете да създадете колекция, наречена todos, състояща се от заглавие и попълнени полета:
Една колекция може да бъде базова или авторизирана колекция. Базовата колекция е типът колекция по подразбиране и можете да я използвате за всеки тип данни. Колекцията за удостоверяване съдържа допълнителни полета за управление на потребители, като потребителско име, имейл и потвърдени.
Не е необходимо да използвате потребителския интерфейс на администратора, за да създадете колекция; можете да създадете такъв с помощта на уеб API. Документи на PocketBase предоставят специфични за SDK примери как да създавате и управлявате колекции чрез API. Можете да създавате, преглеждате, актуализирате, изтривате или импортирате колекции.
Използване на PocketBase в приложение на React
JavaScript SDK ви позволява да взаимодействате с PocketBase от проект на React.
За да следвате, започнете от създаване на React проект.
След това инсталирайте PocketBase JavaScript SDK във вашия проект React чрез npm:
npm инсталирайте pocketbase --save
След това в app.js импортирайте PocketBase и го инициализирайте.
импортиране PocketBase от"джобна база";
конст pb = нов PocketBase(' http://127.0.0.1:8090');
За да илюстрирате как PocketBase интегрира React, ще създадете помощните функции за приложение със задачи. Тези функции ще създават, актуализират, извличат и изтриват елементи.
Създаване на Todo Item
В app.js създайте функция, наречена addTodo.
конст addTodo = асинхронен (todo) => {
опитвам {
конст запис = изчакайтеизчакайте pb.collection("todos").създай (todo);
връщане запис;
} улов (грешка) {
връщане { грешка: съобщение за грешка };
}
};
Тази функция добавя нов запис в колекцията todos.
Актуализирайте елемент от задачи
За да актуализирате запис в колекцията от задачи, създайте функция, наречена updateTodo, и използвайте метода за актуализиране.
конст updateTodo = асинхронен (запис_id, todo) => {
опитвам {
конст запис = изчакайте pb.collection("todos").update (запис_id, todo);
връщане запис;
} улов (грешка) {
връщане { грешка: съобщение за грешка };
}
};
Функцията updateTodo намира задачата въз основа на идентификатора на записа и го актуализира с новите данни.
Изтриване на задача
В app.js създайте функция, наречена deleteTodo, която изтрива запис в колекцията със задачи.
конст deleteTodo = асинхронен (запис_id) => {
опитвам {
изчакайте pb.collection("todos").изтриване (идентификатор на запис);
} улов (грешка) {
връщане { грешка: съобщение за грешка };
}
};
Извличане на Todo елемент
Можете да извлечете един елемент от задачата или всички елементи от колекцията.
Тази функция извлича един елемент от задачата по id:
конст getTodo = асинхронен (запис_id) => {
опитвам {
конст запис = изчакайте pb.collection("todos").getOne (запис_id, {
разширяване: "relField1,relField2.subRelField",
});
връщане запис
} улов (грешка) {
връщане { грешка: съобщение за грешка };
}
};
Докато функцията по-долу ще извлече всички записи в колекцията от задачи:
конст getTodos = асинхронен (запис_id) => {
опитвам {
конст записи = изчакайте pb
.колекция("todos")
.getFullList(200 /* размер на партидата */, {
вид: "-създадено",
});
връщане записи;
} улов (грешка) {
връщане { грешка: съобщение за грешка };
}
}
Можете да използвате тези функции, за да създадете и актуализирате потребителския интерфейс на приложението.
За по-подробни примери вижте API за записи на PocketBase документация или генерираната API документация в „Admin UI > Collections > API Preview“. Трябва да имате достъп до списък, преглед, създаване, актуализиране, изтриване и документацията в реално време за вашата колекция.
Защо трябва да използвате PocketBase
PocketBase е най-добрият бекенд за малки до средни проекти. Изисква минимална настройка и е лесен за използване. Той предлага два клиентски SDK – JavaScript SDK и Dart SDK – и можете да го използвате в уеб и мобилни приложения.
PocketBase също е самостоятелно хостван и можете да го хоствате на локален сървър или VPS. Въпреки че не поддържа облачни функции, можете да го използвате като рамка на Go и да създадете свое собствено приложение с персонализирана бизнес логика.