读取可用数据和选定数据的模型

问题描述 投票:0回答:1

在我目前正在做的项目中,我试图遵循DDD和CQRS的原则,我现在正在为一个设计决策而苦恼,比方说,我有一个页面,上面有一个用户可以订阅的主题列表,用户也可以看到他订阅了哪些主题。用户也可以看到他订阅了哪些主题,我如何检索这些数据?我是否要分别查询主题和标记的主题。

例如

  • GetTopics
  • GetMarkedTopicsForUser

然后在视图中,我把这两个模型结合起来,让用户看到他的订阅。或者我做一个包含所有主题的模型,并已经标记用户已经订阅的主题。

例如

  • GetTopicOverviewForUser
domain-driven-design cqrs
1个回答
1
投票

比方说,我有一个页面,上面有一个用户可以订阅的主题列表。用户也可以看到他订阅了哪些主题。我如何检索数据?

有各种不同的方法,但我会创建两个数据库,分别是 读出模型:

  • 所有主题:所有主题的列表
  • UserWithTopics:查看用户订阅了哪些主题。

当构造你的页面时,你就可以使用这两个数据来查看用户在该页面中可以订阅什么主题,大概退订什么主题。由于你的两头至多有50个题目,页面构造的性能应该不是问题。


0
投票

这实在是一个设计决定--你要给用户看什么?

  1. 所有主题的列表和当前订阅的列表
  2. 所有主题和用户是否有子营养。

如果是1,你想要一个结果视图...

var resultView = new TwoResultViews(avaiableTopics, subscriptionTopics);

返回

"res": {
  "availableTopics": 
  [
    {
       "topic": "topic1",
    }
  ],
  "subscribedTopics": 
  [
    {
       "topic": "anotherTopic"
    }
  ]
}

或如果2

var resultView = new SingleResultView(availableTopics, susbcrtiptionTopics);

返回

  [
    {
       "topic": "topic1",
       "subscribed": true
    }
  ],

无论哪种方式,你都希望对API进行1次调用,除非有明显的(和负责任的--也就是性能)理由来优化它。

© www.soinside.com 2019 - 2024. All rights reserved.