我正在NodeJS做一个关于财务控制的项目,该项目使用具有一些“私有”属性(_id
,_name
,_parent
的帐户(类帐户)模型, _balance
和_isDeleted
)以及一些方法(getter和setter以及其他方法)。
所有创建的帐户(对象)都转换为JSON并存储到文件(自定义数据库)中,但方法除外(仅将属性传递给JSON)。
当我加载数据库文件时,我得到包含所有帐户及其属性的JSON,并需要使用EJS引擎将它们显示在视图页面中。
但是在转换成JSON并加载它们后,他们没有他们的方法来获取他们的私有属性,我想不出任何方式来获取这些信息,除非直接使用属性引用(如{{1} },_id
,...)。
如何根据OO设计模式获取这些属性,避免对类的私有属性进行外部引用?
谢谢!
答案 0 :(得分:2)
开始之前:我不建议将node.js用于金融项目。
JavaScript Number
类型是IEEE 754浮点格式的一种实现,这种数字表示不足以操纵财务信息。
请参阅以下文章: Why not use Double or Float to represent currency?
一些解决方法包括使用Int32
创建类型化数组,然后将美分而不是美元存入其中,但由于许多原因,这仍然不够好(您可能会在某个时刻阅读这些美分,隐式地将它们转换为漂浮来操纵它们。)
我建议您使用支持定点数字的语言(例如:C#decimal
或Java BigDecimal
),除非您想要注册一笔巨大的财务和法律责任
有npm模块实现BigDecimal
但我会在使用之前仔细测试它们。他们还需要更多的工作和计算资源。