summaryrefslogtreecommitdiff
path: root/2025
diff options
context:
space:
mode:
authormuqiuhan <[email protected]>2025-03-30 12:23:13 +0000
committermuqiuhan <[email protected]>2025-03-30 12:23:13 +0000
commit229283bf6d0c15abb4e0dd8cf6bb2e528b8f9c9a (patch)
treef217bbfeccc74fdcbb28b685eb8ee1ee323c1004 /2025
parent1afcff163e930cd31d875127c0b2d87336586e50 (diff)
downloadblog-229283bf6d0c15abb4e0dd8cf6bb2e528b8f9c9a.tar.gz
deploy: e3709d1d023c22e08ed7a8387acb75dda7fcfdf3
Diffstat (limited to '2025')
-rw-r--r--2025/02/19/Repository-pattern-in-Typescript/index.html4
1 files changed, 3 insertions, 1 deletions
diff --git a/2025/02/19/Repository-pattern-in-Typescript/index.html b/2025/02/19/Repository-pattern-in-Typescript/index.html
index d5a0b590..9ba5366a 100644
--- a/2025/02/19/Repository-pattern-in-Typescript/index.html
+++ b/2025/02/19/Repository-pattern-in-Typescript/index.html
@@ -197,7 +197,9 @@
<p>然后实现一个 <code>MongoDataServices</code>:</p>
<figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> &#123; <span class="title class_">Injectable</span>, <span class="title class_">OnApplicationBootstrap</span> &#125; <span class="keyword">from</span> <span class="string">&#x27;@nestjs/common&#x27;</span>;</span><br><span class="line"><span class="keyword">import</span> &#123; <span class="title class_">InjectModel</span> &#125; <span class="keyword">from</span> <span class="string">&#x27;@nestjs/mongoose&#x27;</span>;</span><br><span class="line"><span class="keyword">import</span> &#123; <span class="title class_">Model</span> &#125; <span class="keyword">from</span> <span class="string">&#x27;mongoose&#x27;</span>;</span><br><span class="line"><span class="keyword">import</span> &#123; <span class="title class_">IDataServices</span> &#125; <span class="keyword">from</span> <span class="string">&#x27;../../../core&#x27;</span>;</span><br><span class="line"><span class="keyword">import</span> &#123; <span class="title class_">MongoGenericRepository</span> &#125; <span class="keyword">from</span> <span class="string">&#x27;./mongo-generic-repository&#x27;</span>;</span><br><span class="line"><span class="keyword">import</span> &#123;</span><br><span class="line"> <span class="title class_">Author</span>,</span><br><span class="line"> <span class="title class_">AuthorDocument</span>,</span><br><span class="line"> <span class="title class_">Book</span>,</span><br><span class="line"> <span class="title class_">BookDocument</span>,</span><br><span class="line"> <span class="title class_">Genre</span>,</span><br><span class="line"> <span class="title class_">GenreDocument</span>,</span><br><span class="line">&#125; <span class="keyword">from</span> <span class="string">&#x27;./model&#x27;</span>;</span><br><span class="line"></span><br><span class="line"><span class="meta">@Injectable</span>()</span><br><span class="line"><span class="keyword">export</span> <span class="keyword">class</span> <span class="title class_">MongoDataServices</span></span><br><span class="line"> <span class="keyword">implements</span> <span class="title class_">IDataServices</span>, <span class="title class_">OnApplicationBootstrap</span></span><br><span class="line">&#123;</span><br><span class="line"> <span class="attr">authors</span>: <span class="title class_">MongoGenericRepository</span>&lt;<span class="title class_">Author</span>&gt;;</span><br><span class="line"> <span class="attr">books</span>: <span class="title class_">MongoGenericRepository</span>&lt;<span class="title class_">Book</span>&gt;;</span><br><span class="line"> <span class="attr">genres</span>: <span class="title class_">MongoGenericRepository</span>&lt;<span class="title class_">Genre</span>&gt;;</span><br><span class="line"></span><br><span class="line"> <span class="title function_">constructor</span>(<span class="params"></span></span><br><span class="line"><span class="params"> <span class="meta">@InjectModel</span>(Author.name)</span></span><br><span class="line"><span class="params"> <span class="keyword">private</span> AuthorRepository: Model&lt;AuthorDocument&gt;,</span></span><br><span class="line"><span class="params"> <span class="meta">@InjectModel</span>(Book.name)</span></span><br><span class="line"><span class="params"> <span class="keyword">private</span> BookRepository: Model&lt;BookDocument&gt;,</span></span><br><span class="line"><span class="params"> <span class="meta">@InjectModel</span>(Genre.name)</span></span><br><span class="line"><span class="params"> <span class="keyword">private</span> GenreRepository: Model&lt;GenreDocument&gt;,</span></span><br><span class="line"><span class="params"> </span>) &#123;&#125;</span><br><span class="line"></span><br><span class="line"> <span class="title function_">onApplicationBootstrap</span>(<span class="params"></span>) &#123;</span><br><span class="line"> <span class="variable language_">this</span>.<span class="property">authors</span> = <span class="keyword">new</span> <span class="title class_">MongoGenericRepository</span>&lt;<span class="title class_">Author</span>&gt;(<span class="variable language_">this</span>.<span class="property">AuthorRepository</span>);</span><br><span class="line"> <span class="variable language_">this</span>.<span class="property">books</span> = <span class="keyword">new</span> <span class="title class_">MongoGenericRepository</span>&lt;<span class="title class_">Book</span>&gt;(<span class="variable language_">this</span>.<span class="property">BookRepository</span>, [</span><br><span class="line"> <span class="string">&#x27;author&#x27;</span>,</span><br><span class="line"> <span class="string">&#x27;genre&#x27;</span>,</span><br><span class="line"> ]);</span><br><span class="line"> <span class="variable language_">this</span>.<span class="property">genres</span> = <span class="keyword">new</span> <span class="title class_">MongoGenericRepository</span>&lt;<span class="title class_">Genre</span>&gt;(<span class="variable language_">this</span>.<span class="property">GenreRepository</span>);</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
-<p>以上。</p>
+<hr>
+<p>Sunday, March 30, 2025 7:58 PM:</p>
+<p>感觉以上全错,不应该过度抽象 Repository 的,就让它分散在各个模块中,还可以参考 <a target="_blank" rel="noopener" href="https://github.com/Papooch/nestjs-cls">https://github.com/Papooch/nestjs-cls</a> 实现不会抽象泄漏的事务性 Repository 方法。</p>
</div>