2017-01-16 5 views
1

Я сейчас работаю в проекте с использованием Electron (в основном nodejs с хромом) плюс Angular2Постоянство с помощью машинописи

Есть ли способ сохранить объект машинописи в файл?

В настоящее время я сохраняю объекты в json-файле. Проблема в том, что все методы объекта потеряны

Должен ли я попытаться сохранить переменную __proto__?

Должен ли я использовать фреймворк или специальный механизм базы данных?

Сегодня я читаю объект из файла json и разбираю его с помощью JSON.parse. Тогда я переназначить все свойства в новом объекте, который не является масштабируемым

Любое предложение радушно

Спасибо заранее. Хосе

+0

Я думаю, что любая система сохранения будет требовать, чтобы вы определили шаблоны сериализации. Я не знаю ни одного ORM для nodejs, но если бы мне пришлось это сделать самому, я бы начал с определения протокола сериализации. – Sebas

+1

Все зависит от конкретных потребностей проекта. Я сделал это с помощью ad-hoc-системы, которая поддерживает конечный набор типов. Сериализация записывает тип как число, а затем параметры, которые должны быть переданы конструктору. Deserializer преобразует номер типа в конструктор, а затем создает объект, передавая аргументы конструктору. Это работало очень хорошо годами. Проект, для которого он был разработан, не принесет выгоду от чего-то более сложного. Другие проекты будут иметь другие потребности, которые сделают это решение неадекватным. – Louis

ответ

1

Вы можете экспортировать переменные JSON как:

myJsons.ts:

export var myVar = { 
    name: "John" 
} 

и использовать их в ваших TS файлы, такие как:

myComponent.ts:

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

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

Я думаю, его проблема в том, что частные члены исчезают - любой из них. – Sebas

+0

@Sebas, тогда я неправильно понял проблему.ОП вы можете это прояснить? – echonax

+0

Проблема в том, что все мета-методы класса (общедоступные и частные методы) теряются при сохранении объекта в файле. Мне нужно найти способ сохранить весь объект в файле (json, text, binary ... Мне все равно). Может быть, как писал @Louis, сериализация объектов - это решение –

1

Я ОП!

Я просто найти эту библиотеку, которая, по-видимому, решить проблему

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

Так что же делать? Как в массиве пользователей объектов пользователя вместо простых объектов javascript? Решение состоит в том, чтобы создавать новые экземпляры объекта User и вручную копировать все свойства в новые объекты.

Альтернативы? Да, вы можете использовать эту библиотеку. Цель этой библиотеки - помочь вам сопоставить вам простые объекты javascript с экземплярами классов, которые вы создали.

Я сделаю снимок и отзыв. Bests

+0

Вы использовали эту библиотеку? Было ли это хорошо? – sct999

+0

Привет @ sct999. Да, он работал нормально. Но проверьте другие варианты сериализации, если у вас есть время. Что я, наконец, сделал в этой возможности, чтобы решить эту проблему, был грязный трюк: я сохранил объект в текстовом файле, используя JSON.stringify (object), а затем JSON.parse(), чтобы загрузить его. Я где-то читал, что это было самый быстрый способ сделать это, но не могу вспомнить ссылку, извините. Bests –

Смежные вопросы