Indexed DB - Nur mit Server/Domain möglich?

  • Hallo erstmal,


    ich hätte mal ein paar Fragen bezüglich der IndexedDB.


    Es geht darum, bei mir auf Arbeit eine Browseranwendung zu erstellen die praktisch nur mit Windows-Bordmitteln bzw. Firefox (local auf dem PC) funktionieren soll!

    (Meine EDV-Abteilung möchte mir leider keinen Platz auf den Servern/PHP/SQL bereitstellen um dies zu realisieren.)


    Allerdings wäre Javascript möglich. Und hier würde jetzt die IndexedDB in Spiel kommen.

    Im Netz habe ich schon ein paar Beispiele gefunden und ausprobiert, diese müsste ich halt eben anpassen.


    Soweit so gut. Wenn ich jetzt aber meinen Browser schliesse und wieder öffne sind immer alle Daten weg.


    - Woran liegt dass?

    - Wird hier trotzdem ein Server benötigt?
    - Zugriff erfolgt über: file:///D:/site/index.html


    Grüsse Bernhard

  • Zitat


    Wird hier trotzdem ein Server benötigt?

    Offenbar ja:

    Zitat

    The indexedDB API only works inside a webserver. When you navigate to it using the file system it won't work. The indexedDB API needs a domain context to work in and the file system doesn't provide that. Short you need an url to use the api.

    https://stackoverflow.com/ques…eddb-over-local-html-file


    Bleibt dir wohl nichts anderes übrig, als einen lokalen Webserver zu installieren, wenn das bei euch zulässig ist.

  • Hi Knieshot,


    da es eher untypisch ist, lokale Anwendungen für den Browser in JS/HTML zu erstellen und das auf längere Sicht zu mehr Problemen führt, würde ich nochmal nachfragen, ob ein Server komplett ausgeschlossen ist, oder ob hier auf dem Rechner eine zusätzliche Software installiert werden darf mit NodeJs oder ggf. Electron kannst du das ganze per JS/Html schreiben und dennoch nur lokal laufen lassen.


    Alternativ, kannst du stat der IndexDb den LocalStorage nutzen, der läuft auch bei Dateien im FileSystem: https://developer.mozilla.org/…b/API/Window/localStorage.


    Aber auch hier hast du die Daten nur im aktuellen Browser, zwar auf lange zeit, aber um die Daten zu exportieren oder zwischen verschiedenen Programmen/Browsern zu teilen, musst du dir eine eigene Logik bauen.


    Wenn das eine Software sein soll, die von mehreren Leuten benutzt wird oder die in Zukunft weiterentwickelt werden soll, dann sollte man sich eher dran machen dem Chef / der IT klar zu machen, warum ein Server oder ein lokales Programm hier der richtige weg ist.


    Grüße


    Timo

  • Hi Timo,


    - Server ist komplett ausgeschlossen, weil, wenn ich die Firma verlassen sollte kann es wohl niemand mehr betreuen.

    - Software darf auch nicht installiert werden.

    - localStorage hat meines Wissens ein Speicher-Limit von 5-10MB

    - um die Daten evtl. mit anderen Browsern zu teilen gibt es eine extra-Abteilungs-Netzwerkfestplatte (die ist leider etwas zugemüllt und die Suche dauert etwas)

    - Zwar kann man mit Windows Ordner und Dateien indexieren, aber leider nur die vom PC


    Deshalb wäre IndexedDB eine richtig gute Lösung gewesen um ein wenig Licht ins Dunkel zu bringen. Leider wird hier wohl ein Server benötigt.

  • Hi Knieshot,


    das mit der abgrenzung verstehe ich, darf ich erstmal rein aus interesse fragen was für eine Software du versuchst zu erstellen? Ggf. ist die IndexedDb dann auch begrenzt.

    - um die Daten evtl. mit anderen Browsern zu teilen gibt es eine extra-Abteilungs-Netzwerkfestplatte (die ist leider etwas zugemüllt und die Suche dauert etwas)

    - Zwar kann man mit Windows Ordner und Dateien indexieren, aber leider nur die vom PC


    Deshalb wäre IndexedDB eine richtig gute Lösung gewesen um ein wenig Licht ins Dunkel zu bringen. Leider wird hier wohl ein Server benötigt.

    Das hier macht mich etwas stutzig, es hört sich an als wolltest du mit dem Programm die Dateien durchsuchen?


    Je nachdem was es "ungefähr" ist (ich weiß das meist nicht zu viel Informationen zu Internen Projekten geteilt werden dürfen), aber wenn man es abstrakt genug formuliert geht das aber meist :)


    Grüße


    Timo

  • Das hier macht mich etwas stutzig, es hört sich an als wolltest du mit dem Programm die Dateien durchsuchen

    Hi Timo,


    das geht ja leider nicht.

    Von mir angedacht war, mit php die Dateipfade auf der Festplatte rekursiv zu ermitteln, in einer SQL-db zu speichern und dann anhand von Dateigrösse, Pfad usw. erstmal mehrfach vorhandene Dateien zu finden und zu löschen und die restlichen Dateien anhand der Pfade bzw der Datenbank in verschiedene Ordner zu verschieben. Damit wäre dann etwas mehr Ordnung auf der Festplatte.

    zum Programm:

    Wir setzen hier sehr viel Material mit unterschiedlichen Attributen ein, es gibt verschiedene Kundenanforderungen, jedes Material hat eine Firmeneigene Bestellnummer, das Material wird nicht immer sofort benötigt sondern evtl. erst in 3 Monaten usw.

    Es gibt also insgesamt sehr viel zu beachten.


    Da in der Firma ständig nachgefragt wird: Wie war das nochmal...,

    Wollte ich eine Anwendung schreiben die ähnlich aufgebaut ist wie ein Onlineshop.

    Sprich Material über ein Formular suchen, anklicken und alle Infos/Datenblätter zum Produkt auf einen Blick haben.


    Da unsere Monteure immer wieder anrufen um Material nachzubestellen, soll später noch eine Anwendung dazukommen, die mich/uns beim telefonieren insofern dabei unterstützt das Material einfacher zu bestellen bzw. wir nicht mehr nach dem Telefonat noch Materialnummern heraussuchen müssen.


    Soll einfach ein wenig die Arbeit erleichtern.


    Probeweise hab ich heute ein Json-Datei erstellt und ein wenig rumgespielt.

    Funktioniert bisher ganz gut. Morgen werde ich mich mal an einer Suchfunktion versuchen.

    Da hört sich filter() bisher gut an, funktioniert zumindest zu Hause.


    Grüsse

    Bernhard

  • Hallo Bernhard,


    so macht das schon mehr sinn.


    Zu deinem festplatten Problem, wenn es Windows eigen sein soll, würde ich dir vorschlagen mit Powershell das auslesen des Ordners zu machen, da bekommst du auch alle Daten (z.B. auch erstellt von, zuletzt bearbeitet usw). Powershell ist ein Windows eigenes Tool, daher sollte es vorhanden sein.


    Zu deiner zweiten Anwendung, das über lokale Dateien zu machen, würde ja bedeuten das du jedesmal die JSON Datei in den Browser laden musst und danach die Datei wieder "herunterladen" das ist schon eher unelegant. Aber ich würde dir raten, das erstmal so zu schreiben, wenn das funktioniert, lässt sich die JSON Datei ja einfach gegen einen z.B. in PHP geschriebenen Service der Json zurück gibt, ersetzten (Stichwort WebApi / Rest).


    Ich glaube wenn die Software euch die Arbeit vereinfacht und du aufzeigen kannst, was ihr dabei an Zeit = Geld spart, sollte man dann ggf. auch mit den verantwortlichen sprechen können, damit da ein Server bereitgestellt wird oder das lokal installiert werden kann. Das mit der Wartbarkeit ist auch kein Argument mehr wenn man aufzeigt wie es Dokumentiert wird und das die Implementierung "standards" benutzt welche fast alle Entwickler verstehen :)


    Grüße


    Timo

  • Genau so habe ich mir das auch gedacht. Steter Tropfen höhlt den Stein.

    Wenn dann noch die Kollegen das für gut befinden, wird das denke ich schon werden.


    Und zum Thema IndexedDB kam mir heute schon in den Sinn: Es funktioniert ja alles und wäre verwendbar.

    D.h. die DB wäre eingeschränkt nutzbar, allerdings nur solange der Tab auf ist., speichern könnte man evtl. als PDF.

    Das würde hier für das Tagesgeschäft evtl. schon wieder ausreichen.:)

  • Ich vermute aber, wenn es funktioniert, wäre es gut wenn jeder deiner Kollegen darauf zugreifen kann und am besten über die gleichen Daten verfügt.

    Da macht ein zentraler Server natürlich mehr sinn, als die indexedDb im Browser (die könntest du dann ja komplett ungenutzt lassen). Du musst ggf. auch bedenken wenn sich die URL ändert oder jemand sein Profil löscht, sind die Daten ja alle weg, also die indexedDb als einzigen Speicherort ist für eine Software die in einer Firma laufen soll und vermutlich auch gebackuped, eher schlecht ;).


    Grüße


    Timo

  • Hab das jetzt so aufgebaut, das die Daten alle aus einer bzw. mehreren *.json-Datei kommen.

    Funktioniert bisher einwandfrei.


    Dauerhaft speichern müssen wir eigentlich nicht.

    Bisher ist so, dass ein Monteur anruft und wir alles auf einen Zettel schreiben und nach dem Telefonat noch die ganzen Bestellnummern heraussuchen müssen.

    Um dies uns einfacher zu machen, würde ich unserem Katalog noch ein Formularfeld hinzufügen in das man die Stückzahl eintragen kann.Dann sind nach dem Telefonat die ganzen Bestellnummern praktisch schon hinterlegt (hier reicht ein array eigentlich schon).

    Wenn dann alles bestellt ist können die Daten eigentlich ins digitale Nirvana.