gez*_*ace 7 javascript domain-driven-design mongoose mongodb node.js
我正在 node.js 中构建一个 rest API。我遵循一般的 ddd 架构,即存储库、域模型、实体、值对象等。我选择 montodb 来满足我的持久性需求,并使用 mongoose 与 dB 引擎进行交互。
在 mongoose 中,我们从定义的模式创建模型。我想弄清楚如何将我的域模型与猫鼬模型分开。我想实现值对象,但我不知道如何使用猫鼬模型来做到这一点。
我无法在任何地方找到有关如何执行此操作的任何信息。我想知道是否我会建议。我可以向猫鼬模型添加方法,所以我猜它充当了域模型。如果是这种情况,那么我如何实现值对象?
Mongoose 模型不是纯粹的(它们依赖于基础设施和一些方法 - 例如save- 具有副作用)。我认为使用这个库不可能拥有 100% 纯 DDD 架构。
另一方面,使用纯 JavaScript 对象作为模型(实体、聚合和值对象)并具有 MongoDB 持久性是非常有意义的。它们之间有100%的阻抗匹配。
\n\n这是MongoDB Javascript 驱动程序的附加内容:
\n\nMongo DB 数据类型
\n\n所以在使用 Mongo DB 时需要记住一件重要的事情,那就是轻微的Mongo DB 支持的类型和原生 JavaScript 数据类型之间的让\xe2\x80\x99s 看一下开箱即用的支持类型,然后驱动程序如何提升类型以尽可能接近本机 JavaScript 类型。
\n\nfloat是8字节,可以直接转换为Javascript类型Number
Double 类是表示浮点值的特殊类,这在使用需要确保值始终为浮点的上限集合时特别有用。
整数有点棘手,因为 Javascript 将所有数字表示为 64 位浮点数,这意味着最大整数值是 53 位。Mongo 有两种整数类型,32 位和 64 位。如果可以的话,驱动程序将尝试将该值调整为 32 位,如果必须的话,将其提升为 64 位。同样,如果可以的话,它会反序列化并尝试将其装入 53 位。如果不能,它将返回一个 Long 实例以避免丢失精度。
Long 类是一个特殊的类,可让您存储 64 位整数,也可让您对 64 位整数进行操作。
日期直接映射到 Javascript 日期
RegExp直接映射到 Javascript RegExp
字符串直接映射到 Javascript 字符串(以 utf8 编码)
Binary 类是一个特殊的类,可让您在 Mongo DB 中存储数据\nCode 类是一个特殊的类,可让您在 Mongo DB 中存储 javascript 函数,还可以提供一个范围来运行该方法
ObjectID 类 一个特殊的类,保存 MongoDB 文档标识符(相当于主键)
DbRef 类是一个特殊的类,可让您在文档中包含指向另一个对象的引用
Symbol 类是一个特殊的类,可让您指定符号,与 JavaScript 无关,但与支持符号概念的语言相关。
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |