簡體   English   中英

如何在 Ag-grid 中按 ObjectID (_id) 過濾記錄

[英]How can I filter records by their ObjectID (_id) in Ag-grid

我正在使用 MongoDB 來存儲我的記錄,並正在使用 Ag-grid react 來顯示它們。 網格有幾列,包括記錄的 ObjectID (_id)、名稱、類型等。使用過濾器 agColumnTextFilter 適用於具有 columnDef 的名稱和類型字段:

{
  headerName: 'Column Name',
  field: 'name',
  filter: 'agTextColumnFilter',
},

然后導致此查詢設置(使用包含過濾器選項):

case "contains":
  qp[fieldName] = new RegExp(['.*', user input string, '.*'].join(''), 'ig');

這記錄了正確的查詢:

"query db { name: /.*query string.*/gi }"

並顯示正確的行。 由於顯示的 _id 也是一個字符串,我嘗試了類似的方法:

{
  headerName: 'ID',
  field: '_id',
  valueGetter: (params) => {
    let id = params.data._id;
    return id.slice(id.length-5); //only display last part of ID instead of entire thing
  },
  filter: 'agTextColumnFilter',
},

使用與上面相同的包含邏輯,將以下查詢記錄到控制台:

query db { _id: /.*_id segment.*/gi }

但是,在這種情況下不會返回任何行(即使應該返回行)。 我需要使用不同的邏輯還是當前的邏輯有問題? 任何建議表示贊賞。

編輯:結果即使 ID 顯示為字符串,也需要將字符串轉換為 ObjectID:

qp[fieldName] = new ObjectID(_id string)

問題是搜索特定 ID 的一部分將不起作用,因為它不是有效的 ID。 搜索完整 ID 有效,但也不理想。 如果有人對我如何過濾部分 ID 有任何想法,我將不勝感激。

您可能可以在顯示部分 ObjectId 的列上設置 valueFormatter。 過濾將使用完整的 ObjectId 完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM