2017-01-16 8 views
1

Ich bin derzeit in einem Projekt arbeiten Electron mit (im Grunde NodeJS mit Chrom) und Angular2Persistenz mit Typoskript

Gibt es eine Möglichkeit ein Typoskript Objekt in einer Datei zu speichern?

Derzeit speichere ich Objekte in einer JSON-Datei. Das Problem ist, dass alle Objektmethoden verloren sind

Sollte ich versuchen, die Variable __proto__ zu speichern?

Soll ich ein Framework oder eine spezielle Datenbank-Engine verwenden?

Heute lese ich das Objekt aus einer JSON-Datei und analysiere es mit JSON.parse. Dann zuweisen ich alle Eigenschaften in einem neuen Objekt, das nicht skalierbar ist

Jeder Vorschlag ist willkommen

Vielen Dank im Voraus. José

+0

Ich denke, jede Persistenz-Framework würde erfordern, dass Sie Serialisierungsmuster irgendeiner Art angeben. Mir ist kein ORM für Nodejs bekannt, aber wenn ich es selbst tun müsste, würde ich mit der Definition eines Serialisierungsprotokolls beginnen. – Sebas

+1

Es hängt alles davon ab, was die spezifischen Bedürfnisse des Projekts sind. Ich habe es mit einem Ad-hoc-System gemacht, das eine endliche Menge von Typen unterstützt. Die Serialisierung zeichnet den Typ als Zahl auf und dann die Parameter, die an den Konstruktor übergeben werden müssen. Der Deserializer konvertiert die Typnummer in einen Konstruktor und instanziiert dann ein Objekt, indem er die Argumente an den Konstruktor übergibt. Das funktioniert seit Jahren sehr gut. Das Projekt, für das es entworfen wurde, würde nicht von etwas Höherentwickeltem profitieren. Andere Projekte hätten andere Bedürfnisse, die diese Lösung unangemessen machen würden. – Louis

Antwort

1

Sie können Variablen wie json exportieren wie:

myJsons.ts:

export var myVar = { 
    name: "John" 
} 

und verwenden Sie sie in Ihrem ts-Dateien wie:

myComponent.ts:

import {myVar} from '../path-to-myJsons' 

this.myJson = myVar; 
this.name = this.myJson.name; 
+0

Ich denke sein Problem ist, dass private Mitglieder verschwinden - jeder von ihnen. – Sebas

+0

@Sebas oh dann habe ich das Problem missverstanden.OP kannst du das klären? – echonax

+0

Das Problem ist, dass alle Klasse "Meta" (öffentliche und private Methoden) verloren gehen, wenn ich ein Objekt in einer Datei speichern. Ich muss einen Weg finden, das gesamte Objekt in einer Datei zu speichern (JSON, Text, Binär ... ist mir egal). Kann sein, wie @Louis schrieb, Objektserialisierung ist die Lösung –

1

Ich bin der OP!

Ich finde gerade diese Bibliothek, die anscheinend das Problem lösen

https://www.npmjs.com/package/serializer.ts

Also, was zu tun? Wie in Benutzer Array von Benutzer-Objekten anstelle von plain Javascript-Objekte zu haben? Die Lösung besteht darin, neue Instanzen des Objekts Benutzer zu erstellen und alle Eigenschaften manuell in neue Objekte zu kopieren.

Alternativen? Ja, Sie können diese Bibliothek verwenden. Zweck dieser Bibliothek ist es, Ihnen zu helfen, JavaScript-Objekte auf Instanzen der von Ihnen erstellten Klassen abzubilden.

Ich gebe einen Schuss und Feedback. Bests

+0

Haben Sie diese Bibliothek verwendet? war es gut? – sct999

+0

Hallo @ sct999. Ja, es hat gut funktioniert. Aber wenn Sie Zeit haben, prüfen Sie, ob andere Alternativen serialisiert werden. Was ich schließlich in dieser Gelegenheit tat, um dieses spezifische Problem zu lösen, war ein schmutziger Trick: Ich speicherte das Objekt in einer Textdatei mit JSON.stringify (Objekt) und dann JSON.parse(), um es zu laden Ich las irgendwo, dass es war der schnellste Weg, es zu tun, aber kann mich nicht an die Referenz erinnern, tut mir leid. Bester –