Context.TODO() 或Context.Background():選擇正確的上下文
將程式碼移轉到mongo-driver 時,決定context.TODO() 和context.Background() 之間可能會令人困惑。兩者都返回一個空上下文,但理解它們的預期用途至關重要。
Context.Background()
context.Background() 建立一個空的、不可取消的上下文沒有價值觀或截止日期。它通常用作初始化、測試以及上下文參數不可用的主函數中的頂級上下文。
Context.TODO()
context .TODO() 也會建立一個空上下文,但當不確定使用哪個上下文時,它有助於記錄上下文的缺乏。它可以充當佔位符,直到適當的上下文可用。
何時使用Context.TODO()
context.TODO() 的主要用例是當您還沒有可用的上下文或不清楚要使用哪個上下文時。利用此函數向靜態分析工具和 IDE 明確指示這種情況。
使用來自外部來源的上下文
如果您從外部來源(例如HTTP)收到上下文請求,請考慮使用該上下文透過MongoDB 驅動程式進行後續操作。這允許在提前終止期間取消請求上下文,從而節省伺服器資源。
為特定用例派生上下文
您可以派生具有特定超時或截止日期的新上下文如果需要的話,來自context.TODO() 或context.Background( ) 。例如,如果您需要特定MongoDB 查詢6 秒逾時:
ctx, cancel := context.WithTimeout(r.Context(), 6 * time.Second) defer cancel() curs, err := c.Find(ctx, bson.M{"some": "filter"})
結論
使用context.TODO() 和context 之間的決定.Background()取決於您的特定上下文可用性。考慮具體情況並使用適當的上下文來有效處理取消和超時至關重要。
以上是Context.TODO() 與 Context.Background():您應該在 MongoDB 驅動程式中使用哪個上下文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!