Feathers: Synchronisation de la base de données pour les applications hors ligne

Créé le 16 mars 2016  ·  20Commentaires  ·  Source: feathersjs/feathers

FeathersJS semble être un rêve devenu réalité. Mais pour moi, il manque une fonctionnalité très essentielle pour créer des applications hors ligne, à savoir la possibilité de synchroniser des bases de données distantes et locales.

Voici une liste par kinto qui montre toutes les solutions qui offrent ce type de fonctionnalité de synchronisation. Il existe déjà une base de données de stockage local , mais comment se synchroniserait-elle avec une base de données distante? Un plugin pour CouchDB rendrait cela possible?

Discussion Proposal Question

Commentaire le plus utile

Le stockage universel (isomorphe) est maintenant possible en utilisant feathers-levelup , avec leveldown (ou tout autre backend de stockage ) dans le nœud et level-js dans le navigateur. (merci @ derek-watson!)

garder les services client et serveur synchronisés est laissé au lecteur, mais cela devrait être simple avec les événements de données en temps réel . si vous faites des progrès ici, j'apprécierais tous les modules réutilisables, ce serait génial. :le sourire:

Tous les 20 commentaires

Ouais, hors ligne d'abord doit avoir des fonctionnalités. Je pense que l'accrochage avec PouchDB est facile, mais la chose est que j'ai besoin d'apprendre et de m'amuser avec MongoDB (la raison pour laquelle je suis ici est MongoDB) donc ce serait bien si je peux synchroniser (est-ce que cela fonctionne via un navigateur ?) Les données de local stockage / IndexedDB vers MongoDB à distance (comme minimongo )

TL; DR J'ai besoin de FeatherJS de ce qui n'est pas actif / bogué et semble obsolète / mort

Acclamations

@katopz actuellement, nous ne prenons pas en charge le mode hors ligne automatique. C'est à vous de décider actuellement. Nous n'avons pas eu le temps de l'étoffer complètement, mais je suis à peu près sûr que toutes les pièces sont en place pour le faire maintenant.

Vous pouvez utiliser https://github.com/feathersjs/feathers-localstorage sur le client, puis vous devriez pouvoir simplement configurer des hooks pour mettre en cache vos données after un service renvoie des données ou vérifier votre cache de stockage local before votre service arrive sur le serveur.

Nous espérons avoir le temps d'étoffer cela au cours du mois prochain. Si quelqu'un veut faire une pause et soumettre un PR ou un guide, ce serait génial! :le sourire:

Nous y avons définitivement réfléchi et construit les pièces pour le faire, mais nous n'avons tout simplement pas eu le temps de terminer l'idée pour le moment.

Le stockage universel (isomorphe) est maintenant possible en utilisant feathers-levelup , avec leveldown (ou tout autre backend de stockage ) dans le nœud et level-js dans le navigateur. (merci @ derek-watson!)

garder les services client et serveur synchronisés est laissé au lecteur, mais cela devrait être simple avec les événements de données en temps réel . si vous faites des progrès ici, j'apprécierais tous les modules réutilisables, ce serait génial. :le sourire:

Oui! J'ai oublié le levelup! Beaucoup: coeur: à @ derek-watson pour ça! Techniquement, vous pouvez également utiliser NeDB dans le navigateur. Il existe donc peu d'options de moteur de stockage différentes.

Je pense que cela ressemblera plus à une recette qu'à n'importe quel module réutilisable. Peut-être quelques crochets groupés quelque part. Si quelqu'un fait des progrès sur ce point avant nous, veuillez partager. Sinon, nous y reviendrons probablement dans le mois prochain avec le # 227.

Les trucs leveldb ont fière allure! Je pense que combiné avec https://github.com/feathersjs/feathers/issues/256 serait une bonne base pour implémenter de vraies fonctionnalités hors ligne. L'extension réactive rendra beaucoup plus facile la mise en œuvre de choses comme la mise en cache de secours côté client à partir de laquelle elle ne sera, espérons-le, qu'un petit pas vers une synchronisation complète hors ligne.

Je travaille sur un middleware Redux pour prendre en charge les besoins hors ligne courants de feathersjs.

J'espère finir la première version bientôt.

@hnordt Génial! Vous voudrez peut - être jeter un oeil à @ahdinosaur « s https://github.com/ahdinosaur/feathers-action et @saiichihashimoto » s https://github.com/saiichihashimoto/feathers-react-redux d'inspiration ou peut - être collaborer!

Merci @ekryski. Je vais regarder.

feathers-react-redux a besoin de quelques travaux pour être vraiment utilisable, ce n'était pas bien planifié. ;-)

+1 pour l'ajout de la prise en charge de pochdb

Je pense que l'utilisation de NeDB serait la meilleure option de synchronisation hors ligne. Il prend déjà en charge la syntaxe de requête complète, vous pouvez donc y effectuer des requêtes de la même manière que si vous étiez connecté au serveur. Il est ridiculement performant et dispose d'un moteur de stockage enfichable pour le navigateur. De plus, nous avons déjà un adaptateur conçu pour cela.

+1 pour la solution NeDB. Je l'aime aussi pour le serveur.

NeDB ou LokiJS ou PouchDB?
Comparé à NeDB, je préférerais LokiJS car il est encore plus rapide et l'auteur avait un plan pour développer une api entièrement compatible mongodb.
Pour PouchDB, il est entièrement compatible avec CouchDB. Ainsi, en utilisant une seule commande, la base de données peut être synchronisée avec n'importe quel serveur CouchDB.

Loki a l'air plutôt cool.

Je recommande LinvoDb https://github.com/Ivshti/linvodb3
Il a des requêtes en direct et évolue mieux que NeDB

Je n'ai littéralement aucune opinion sur la meilleure solution de stockage hors ligne, car je ne connais rien au stockage mobile et aux premières applications hors ligne à part faire beaucoup de travail manuel avec le stockage local. Mais cela vaut probablement la peine de jeter dans un certain contexte ce que nous faisons à Headstart / ce que nous pensons au cas où cela ferait basculer certains commutateurs pour d'autres.

Nous cherchons à ajouter un peu de capacité hors ligne à nos applications en novembre, heure de décembre, donc nous n'avons pas encore abordé le nœud du problème.

En attendant, nous allons probablement utiliser quelque chose comme redux-persist pour certaines de nos capacités hors ligne dont nous avons besoin pour un mvp.

https://github.com/rt2zz/redux-persist

Je suppose que ce que je pense, c'est qu'il y a une raison pour laquelle feathers a besoin de prendre en charge un adaptateur local mobile lui-même?

Comme indiqué par

Pour ma part, je préférerais de loin une bibliothèque de crochets montrant comment «consolider» en fonction de la connectivité mobile que chaque personne peut ensuite appliquer à n'importe quel système de stockage local qu'elle souhaite utiliser.

J'espère que cela a du sens et je n'ai pas complètement mal compris.

@ gor181 pour référence.

@Mentioum Comment va votre MVP Nov / Dec, qu'avez-vous décidé d'utiliser?

J'ai choisi d'utiliser ForerunnerDB

Le dim.27 novembre 2016, 12:12: Luke Browell [email protected]
a écrit:

@Mentioum https://github.com/Mentioum comment va votre MVP de novembre / décembre,
qu'avez-vous décidé d'utiliser?

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/feathersjs/feathers/issues/264#issuecomment-263144379 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ACFSMbrn_nO1oyNsoK0F41BqaetzowkNks5rCeQqgaJpZM4HxjN7
.

>

Alexandre Maximilien
[email protected]
www.maxofeden.com

@eddyystop fait un excellent travail sur le front hors ligne. Vous pouvez trouver les guides avec des liens vers tous les référentiels associés à https://docs.feathersjs.com/guides/offline-first/readme.html

Des discussions et des questions spécifiques devraient être dirigées vers les référentiels appropriés afin que je pense que nous puissions clore cela.

Ce problème a été automatiquement verrouillé car il n'y a eu aucune activité récente après sa fermeture. Veuillez ouvrir un nouveau problème avec un lien vers ce problème pour les bogues associés.

Cette page vous a été utile?
0 / 5 - 0 notes