This package will help you to keep your offline! app to be synced with a mongodb database online.
yarn install @offlinely/server
For client integration, take a look at @offlinely/idb
-
Creating models:
Same as @offlinely/idb, and you need to create an instance of
IDB.Database
for each db, if you have only one App, you will just need one instance ofIDB.Database
. Make sure you have the same structures in backend and front. For more about the model structure, take a look at the doc in @offlinely/idbExample:
// models/car-brand.ts import IDB from '@offlinely/backend' const createApp = () => { return new IDB.Database({ User: { firstname: String, password: {$type: String, $required: true}, access: Boolean }, Car: { name: String, user: { $ref: 'User'} }, }) } export default createApp
-
Creating the server
import IDB from "@offlinely/backend" import createApp from "./models/car-brand" const server = new IDB({ TanaApp: createApp(), TulearApp: createApp() // here, keys 'App1' and 'App2' will be the Mongo database name })
createApp
creates a new instance of with a Car branding model ⚠
-
Models are just an instance of
IDB.Database
with custom keys and types. Types may be:String
,Number
,Boolean
,Date
,File
(see File section),Enum
(See Enum section), or a Complex Structure from your weird imagination// server.ts export const myDatabase = new IDB.Database({ User: { firstame: String, lastname: String, age: Number, access: Boolean, // Adding $required: false will set the reference not required for creating the item parents: { dad: {$ref: 'User', $required: false}, mom: {$ref: 'User'} } }, ... })
-
Server is an instance of IDB that, it will manage the syncing, the databases and
custom events and actions[TODO]
. -
You can sync as many app as you want in one instance on IDB
class IDB(models, IDBConfig)
const server = new IDB({ EniDB: createSchoolDBModel(), EmitDB: createSchoolDBModel(), EstiDB: createSchoolDBModel(), RemaxDB: createSellDBModel(), MinisoDB: createSellDBModel(), BikerDB: createBikeManagingDBModel() }, { port: 4000, mongoString: 'mongo://...' })
Name Type Required Default Description schema Object Yes - Backend socket backend URL IDBConfig.mongoString string No "mongo://localhost:27017"
Connexion string of mongo database IDBConfig.port number No 8000
The server port that will be used
-
To sync the server with a frontEnd app, you have to get a token from the backend. To do so call the getTokens method of the created server object.
-
You have to get these tokens just once, they will be valid even if the server restarts
const server = new IDB(...) server.onReady(() => { console.log(server.getTokens()) })