问题标签 [repository-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1274 浏览

facebook - Gitub 社交媒体图像在更新时不刷新

我已经更改了我的 GitHub 存储库的社交媒体图像,但是当我尝试在 facebook 中共享它时,它会显示旧图像,因为我从来没有更新过它。可以通过转至 更新图像。我下载了模板并用它来创建图像,但没有删除侧面的红条。当我分享它时,它看起来像垃圾,所以我删除了红色条并将它们变成白色。现在,当我在 Facebook 上分享新图片时,我的手机不想显示新图片。your repo -> Settings -> Social preview

这是与浏览器相关的缓存问题还是仅仅是 Github 功能不起作用?我究竟做错了什么?

0 投票
2 回答
846 浏览

android - Android 架构 LiveData 和存储库

我正在将我的应用程序转换为房间数据库,并尝试遵循基于“带视图的房间”的谷歌架构最佳实践。

我无法从干净架构的角度理解存储库。

Words 数据库示例仅包含一个表和一个使用它的视图,使其成为一个简单的 HelloWorld 示例。但让我们从那开始。

有一个显示单词列表的视图。因此,所有单词都需要从数据库中读取并显示。所以我们有一个 MainActivity 和一个要连接的数据库。

  1. 实体词
  2. WordDao 访问数据库
  3. WordViewModel:为了将活动生命周期与数据生命周期分开,使用了 ViewModel。
  4. WordRepository:因为数据可能保存在数据库或云中或任何引入存储库以处理数据来自何处的决策。
  5. 活动与视图

如果在数据更改时更新视图会很好,因此使用 LiveData。

这反过来意味着,存储库正在为完整表提供 LiveData:

对于单一视图来说,这一切都很好。

现在来回答我关于扩展这个概念的问题。

让我们假设,单词表有两列“word”和“last_updated”作为时间字符串。

为了更容易比较时间字符串需要转换为毫秒,所以我有一个函数。

问题:在哪里放置有趣的 queryMaxServerDateMS() 以获得最大值(last_updated)?

对我来说,将它放入 WordRepository 是很自然的。

第二个要求:后台作业更新数据库中的单词列表。

假设我现在想要一个定期安排的后台作业,它检查服务器是否有新条目并将它们下载到数据库。该应用程序可能未打开。

这个问题只是转达了上面queryMaxServerDateMS的问题。

该作业将首先检查是否通过询问服务器是否存在比最大已知条目更新的条目来创建新条目。

所以我需要获取一个新类 WordRepository,进行查询,获取 max last_update 并询问服务器。

但是:我不需要后台作业中的 LiveData,当 val repositoy = WordRepository 读取完整的表时,这是不必要的,而且会耗费时间、内存和电池。

我还可以想到许多不同的片段,它们需要单词表的一些数据,但从不需要完整数据,想想列出一个产品的产品详细信息屏幕。

所以我可以将它移到另一个存储库或 DbHelper 中,但是你想调用它。

但最后我想知道,如果我使用 LiveData,它需要 View、ViewModel 和 Repository 紧密耦合在一起:

问题:我是否需要为每个活动/片段创建一个存储库,而不是为每个表创建一个更符合逻辑的存储库?

0 投票
2 回答
1029 浏览

c# - 在 DDD 架构中,我应该将与按角色用户过滤数据相关的查询逻辑放在哪里

我正在为我的应用程序遵循 DDD 架构。我有应用层、域层和数据访问层(存储库)。假设我在我的应用程序中有 3 个角色:管理员、主管、代理。每个角色都应该访问分配给自己的数据。所以问题是,我是否应该放置查询逻辑以便按存储库中的角色过滤数据,例如

我认为与业务逻辑相关的逻辑应该放在领域层。但我还没有清除这一点。你们能帮我解决这个问题吗?

0 投票
1 回答
317 浏览

git - 在 Git 中跟踪多语言项目的最佳方法是什么?

我使用的自动化解决方案在单个项目中使用了 2-4 种不同的语言。例如,我可能使用 C# 来管理整体自动化和用户界面,但这将与 PLC 以及机械臂对话,每个机械臂都包含自己的代码库。

我和我的团队使用 git 存储每个代码库,但每个代码库都在自己的存储库下。这意味着为单个项目解决方案管理 1-4 个不同的存储库,其中有人可能必须克隆所有 4 个存储库,才能启动并运行一个自动化解决方案。我想把这些都放在 git 中的一个保护伞下,但想知道是否有一些好的论据可以让事情像这样被打破。

有没有人遇到过这种情况,您如何建议在 git 中处理包含多种编程语言的独特项目?

0 投票
1 回答
38 浏览

spring-data-jpa - 具有多个实体的 Spring Data Repository

根据以下代码,我有 2 个实体具有一对一的关系。

我是否需要创建两个 spring Data Repositories 来存储 Passport 和 Student ?
还是有更好的解决方案?

0 投票
1 回答
51 浏览

git - 你可以变基和/或合并到同一个主分支吗?

目前我正在进行一个项目,开发人员无法就是否使用RebaseMerge达成协议。您是否能够将 Gitflow/Workflow 混合起来而不会出现问题?是这样,为什么会这样?

我知道在协作和处理Feature Branch时可能会出现问题。不过这个问题是针对大师科的。

0 投票
1 回答
20 浏览

repository-pattern - 存储库模式:没有得到整个域对象的不良行为(读取方法)?

存储库模式可以抽象出实际的数据源,我确实看到了很多好处,但是存储库不应该使用 IQueryable 来防止泄漏数据库信息,它应该始终返回域对象,而不是 DTO 或 POCO,并且它这是最后一件事,我很难解决问题。

如果存储库模式总是必须返回一个域对象,这是否意味着它在大多数情况下都会获取太多数据?假设它返回一个具有四十个属性的员工域对象,并且在使用该对象的服务和视图层中,实际使用了其中的五个属性。

这意味着数据库已经通过网络获取了大量不必要的数据。对一个对象执行此操作几乎不会引起注意,但是如果通过这种方式推送数百万条记录并且每次都丢弃大量数据,这是否不被视为不良行为?

是的,当添加或编辑或删除对象时,您将使用整个对象,但读取整个对象并将其推送到仅使用其中一部分的另一层并没有以最佳方式利用下划线数据库和网络。我在这里想念什么?

0 投票
1 回答
196 浏览

database - 数据库的 Git 存储库结构和策略

有人可以指导我找到一些有用的资源/参考资料,这些资源/参考资料涵盖了将 Git 用于数据库的最佳实践吗?

我对数据仓库解决方案的 Git 存储库结构和策略特别感兴趣。以及通用存储库结构和 git 分支策略是否适用于不同的数据库技术。这些数据库技术得到了具有不同规模和技能/经验水平的团队的支持,这些团队使用 git 存储库并希望采用 CICD。

这些技术中的一些交付将是不受支持的 Adhoc/数据假设类型的解决方案,而其他交付将是重复生产支持的 ETL 解决方案。

0 投票
1 回答
20 浏览

api - 在哪个 API 层(存储库/服务)中放置自定义 SQL 查询逻辑?

我正在构建一个 API,其中我需要的数据与它的持久化方式有很大不同(对于对数据库的每次访问,我正在执行 5-10 次连接,但我无法通过代码执行它们,因为它花费的时间太长)。

我正在使用控制器服务存储库架构,并且我已经阅读了几个来源,存储库应该只包含基本的 CRUD 操作。

鉴于这种:

  • 他们应该在存储库或服务级别吗?
  • 有没有其他更适合这个用例的结构化代码方式?
0 投票
0 回答
27 浏览

git - 在基本存储库和“专业”存储库之间创建源代码控制分离的最佳实践?

假设您正在创建一个开源库,托管在公共 Github 存储库上。然后,您想提供一个具有“专业”功能的付费版本,托管在一个私有的 Github 存储库中,授予对那些被授予“专业”许可证的访问权限。

理想情况下,应该出现在两个存储库上的错误修复和其他类型的更新将提交到基本公共存储库,并且当准备好时,专业存储库会收到来自基本存储库的更改的拉取请求。

似乎像https://github.com/repo-sync/github-sync这样的 Github 操作会起作用,但我很好奇是否有更好的方法。

如何根据最佳实践构建他们的代码、git、操作等?