」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 mgo (Go) 中的介面解組不同類型的嵌入式節點?

如何使用 mgo (Go) 中的介面解組不同類型的嵌入式節點?

發佈於2024-11-10
瀏覽:406

 How to Unmarshal Embedded Nodes of Different Types Using Interfaces in mgo (Go)?

如何在mgo (Go) 中使用介面作為模型

處理包含多個不同類型的嵌入節點的工作流程時,利用Go 介面是一種常見的方法。然而,當嘗試使用 mgo 解組這些文件時,它會帶來挑戰。

要解決此問題,您不能直接在文件中包含介面。這是因為解碼器缺乏創建適當實例所需的類型資訊。

一個可行的解決方案是建立一個包裝器結構來儲存實際節點及其類型:

type NodeWithType struct {
   Node Node `bson:"-"`
   Type string
}

type Workflow struct {
   CreatedAt time.Time
   StartedAt time.Time
   CreatedBy string
   Nodes []NodeWithType
}

要完成設置,您必須在 NodeWithType 上實作 SetBSON 函數。此函數將解碼類型字串,根據該字串實例化正確的節點類型,然後將文件解組到新建立的實例中。實作 SetBSON 可確保每個嵌入節點被正確解組為正確的特定類型。

最新教學 更多>
  • 如何建立您的第一個 Web 應用程式:將想法變為現實的初學者指南
    如何建立您的第一個 Web 應用程式:將想法變為現實的初學者指南
    您对网络应用程序有一个想法,但您不确定如何或从哪里开始?构建 Web 应用程序听起来令人畏惧,特别是如果这是您第一次。然而,一步一步地,任何人都可以将他们的想法变成现实,只关注非常重要的组成部分。您将获得可操作的提示和资源,以及有关如何构建您的第一个 Web 应用程序的清晰路线图。 第 1 步:了...
    程式設計 發佈於2024-11-18
  • 如何使用 Sequelize CLI 從 Sequelize 模型產生遷移?
    如何使用 Sequelize CLI 從 Sequelize 模型產生遷移?
    使用Sequelize CLI 從Sequelize 模型自動產生遷移人們可能擁有預先存在的Sequelize 模型,但希望使用遷移而不是資料庫同步。 Sequelize CLI 提供了一篇文章中概述的解決方案,其中指出,「當利用CLI 進行模型生成時,您將自動獲取必要的遷移腳本。」要實現此任務: ...
    程式設計 發佈於2024-11-18
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-18
  • 如何只檢索 LEFT JOIN 中的第一行?
    如何只檢索 LEFT JOIN 中的第一行?
    僅檢索LEFT JOIN 中的第一行在SQL 中,執行LEFT JOIN 操作可能會導致右表中出現多行與左表中的一行相符。在某些情況下,希望為左表中的每一行僅檢索右表中的第一行。 考慮以下簡化的資料結構:**Feeds** id | title | content -----------------...
    程式設計 發佈於2024-11-18
  • 如何修復 C++ 中指標與整數之間的比較錯誤
    如何修復 C++ 中指標與整數之間的比較錯誤
    C 中的比較錯誤:指針與整數在Bjarne Stroustrup 的C 書籍第三版開發人員中嘗試編譯一個簡單函數時可能會遇到編譯時錯誤:error: ISO C forbids comparison between pointer and integer將指標與整數進行比較時會出現此問題。在提供...
    程式設計 發佈於2024-11-18
  • 為什麼我的 Keras 模型僅在資料集的一部分上進行訓練?
    為什麼我的 Keras 模型僅在資料集的一部分上進行訓練?
    Keras 訓練資料差異在按照官方TensorFlow 指南使用Keras 建立神經網路時,您注意到該模型僅使用儘管有60,000個條目,但訓練期間可用資料集的一部分。 了解批量大小模型擬合期間顯示的數字 1875 並不表示訓練樣本,而是表示批次數量。 model.fit 方法有一個可選參數,bat...
    程式設計 發佈於2024-11-18
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-18
  • 為什麼推遲 GZIP Writer 關閉會導致 Go 中的資料遺失?
    為什麼推遲 GZIP Writer 關閉會導致 Go 中的資料遺失?
    延遲GZIP Writer 關閉會導致資料遺失延遲GZIP Writer 關閉會導致資料遺失在Go 中,使用defer 關閉gzip.Writer 可能會導致意外的EOF 錯誤從壓縮資料中讀取。要解決此問題,讓我們深入研究問題的具體情況並提供替代解決方案。 理解問題:func zipData(ori...
    程式設計 發佈於2024-11-18
  • 介面如何實現超越簡單方法定義的多態性?
    介面如何實現超越簡單方法定義的多態性?
    多態性:不只是方法定義在物件導向程式設計中,介面在確保程式碼靈活性和可重用性方面發揮著至關重要的作用。雖然您正確地聲明介面只需要實作它們的類別來提供必要的方法,但它們的真正價值遠遠超出了方法聲明。 考慮您提供的範例,使用 IBox 介面和 Rectangle 類別。直接建立 IBox 實例是不可能的...
    程式設計 發佈於2024-11-18
  • 為什麼 Java 中的陣列不能保存通用項?
    為什麼 Java 中的陣列不能保存通用項?
    陣列可以儲存泛型項嗎? 泛型型別和陣列在 Java 中的互動方式不同。考慮以下程式碼:ArrayList<Key> a = new ArrayList<Key>();此程式碼編譯成功,建立一個名為 a 的通用 ArrayList。但是,下面的程式碼無法編譯通過:ArrayLi...
    程式設計 發佈於2024-11-18
  • 為什麼鍵入「String」後 Eclipse 的 Java 程式碼補全不起作用?
    為什麼鍵入「String」後 Eclipse 的 Java 程式碼補全不起作用?
    Eclipse/Java 程式碼完成故障:故障排除Eclipse 是一種流行的Java 開發環境,偶爾會遇到程式碼完成功能的問題。當使用者在輸入“String”後按下“Ctrl”“Space”時遇到程式碼完成無法產生建議的情況時,就會出現這樣的問題。該問題表現為「無預設提案」訊息,並伴隨指示未完成的...
    程式設計 發佈於2024-11-18
  • 將 fetchall() 與 MySQLDB SSCursor 結合使用對於大型資料集實際上有效嗎?
    將 fetchall() 與 MySQLDB SSCursor 結合使用對於大型資料集實際上有效嗎?
    高效利用MySQLDB SSCursor 處理大型結果集處理涉及數十萬或更多行的龐大結果集時,高效的內存管理變得尤為重要至關重要的。因此,MySQLDB SScursor(串流選擇遊標)成為最小化記憶體消耗的合適工具。 有基礎遊標的Fetchall() 與SSCursor 的差異與普遍看法相反,從S...
    程式設計 發佈於2024-11-18
  • 我如何在前端使用 Service Worker 最佳化載入時間
    我如何在前端使用 Service Worker 最佳化載入時間
    您是否遇到過網站載入時間過長的情況,如下圖所示? ?你聽過服務人員嗎? 在這篇文章中,我們將深入探討什麼是 Service Worker? 、它們如何運作 ⚙️,以及我如何使用它們來提高 Web 應用程式的效能。 什麼是 Service Worker? ? Service Worker 是一...
    程式設計 發佈於2024-11-18
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-18
  • 如何使用純 CSS 建立等高列?
    如何使用純 CSS 建立等高列?
    使用CSS 實現等高列在Web 開發領域,對視覺吸引力佈局的追求往往導致對等高佈局的渴望高度列。使用純 CSS 實現這種效果可能是一個挑戰,促使許多開發人員轉向背景圖片等解決方案。然而,存在著一種更簡單、更有效的方法。 垂直表格方法為了在不借助背景圖像的情況下實現等高列,“垂直表格”方法事實證明它既...
    程式設計 發佈於2024-11-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3