【发布时间】:2020-12-18 03:12:15
【问题描述】:
我正在关注这个项目的领域驱动设计。
我有一个包含图像的对象。我们就叫它Product:
class Product {
UniqueID id;
ProductName name;
ImageBytes imageBytes;
}
UniqueID、ProductName 和 ImageBytes 只是经过验证的对象,分别代表 String、String 和 List<int>。
我想将实际图像存储在 Firebase 存储上,并将 imageId 保存在 Firestore 上。
因此,在我的想法中,我在 Firebase 存储中有一个 ID 为 xYF87Ejid0093RTcxaWpof 的图像,并且在 Firestore 中有一个包含此 ID 而不是实际图像的文档。
我遇到的问题是编写产品的数据传输对象。我应该如何将imageId 转换为实际图像?
请考虑我使用的是 DDD,所以我的 DTO 和我的实体类是联合(使用 Freezed)。
我认为我应该在基础架构级别有一个名为 FirestoreProduct 的中间类,如下所示:
class FirestoreProduct {
UniqueID id;
ProductName name;
UniqueID imageId;
}
这样我就可以编写一个使用此类的 DTO,并且可以在下载图像后从存储库类创建 Product 对象。 有没有更好的办法以 DDD 的方式解决这个问题?
提前致谢。
【问题讨论】:
标签: firebase flutter google-cloud-firestore domain-driven-design firebase-storage