【问题标题】:Persistence using Typescript使用 Typescript 的持久性
【发布时间】:2017-05-31 08:26:49
【问题描述】:

我目前正在使用 Electron(基本上是带有铬的 nodejs)加 Angular2 的项目中工作

有没有办法将打字稿对象保存在文件中?

目前,我将对象保存在 json 文件中。问题是所有对象方法都丢失了

我应该尝试保存 __proto__ 变量吗?

我应该使用框架还是特殊的数据库引擎?

今天我正在从 json 文件中读取对象并使用 JSON.parse 对其进行解析。然后我重新分配一个新对象中的所有属性,这是不可扩展的

欢迎提出建议

提前致谢。何塞

【问题讨论】:

  • 我认为任何持久性框架都需要您指定某种序列化模式。我不知道 nodejs 有任何 ORM,但如果我必须自己做,我会从定义序列化协议开始。
  • 这一切都取决于项目的具体需求是什么。我已经使用支持有限类型集的临时系统完成了它。序列化将类型记录为数字,然后是必须传递给构造函数的参数。反序列化器将类型号转换为构造函数,然后通过将参数传递给构造函数来实例化一个对象。这多年来一直运作良好。为其设计的项目不会从更复杂的东西中受益。其他项目会有其他需求,这会使该解决方案变得不充分。

标签: json node.js angular typescript electron


【解决方案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;

【讨论】:

  • 我认为他的问题是私人成员消失了——他们中的任何一个。
  • @Sebas 哦,那我误解了这个问题。 OP,你能澄清一下吗?
  • 问题是当我将对象保存到文件中时,所有类“元”(公共和私有方法)都丢失了。我需要找到一种方法将整个对象保存在文件中(json、文本、二进制......我不在乎)。可能正如@Louis 所写,对象序列化是解决方案
【解决方案2】:

我是主播!

我只是发现这个库显然可以解决问题

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

那该怎么办?如何在用户数组中拥有用户对象而不是 普通的javascript对象?解决方案是创建用户的新实例 对象并手动将所有属性复制到新对象。

替代方案?是的,你可以使用这个库。这个图书馆的目的 是帮助您将普通的 javascript 对象映射到 您创建的类。

我会试一试并提供反馈。最好的

【讨论】:

  • 嗨@sct999。是的,它工作得很好。但是,如果您有时间,请检查其他替代方法以进行序列化。在那次机会中我最终为解决该特定问题所做的是一个肮脏的技巧:我使用 JSON.stringify(object) 将对象保存在一个文本文件中,然后使用 JSON.parse() 加载它我在某处读到它是最快的方法,但不记得参考,对不起。最佳
猜你喜欢
  • 2017-01-15
  • 1970-01-01
  • 2013-04-03
  • 2016-11-04
  • 1970-01-01
  • 2012-12-11
  • 2013-02-15
  • 1970-01-01
  • 2014-04-14
相关资源
最近更新 更多