簡體   English   中英

Mongoose文檔遞歸更新

[英]Recursive updating of Mongoose document

我目前正在嘗試在將文檔保存到數據庫之前對其實施對稱(AES256-GCM)加密。 因此,我使用了pre('save')方法來獲取數據並在將其保存到數據庫之前對其進行加密。 我需要這樣做以滿足要求對所有醫療數據進行加密並且只能由擁有數據的用戶解密的規定。 這是為了一點背景

因此,我為用戶設置了一個復雜的架構設置,其中包含大量 PII 信息,因此我無法發布示例,但我可以為您提供經過清理的 JSON 數據結構,這不會泄露我正在處理的內容。 (保密協議...)。

{
    "title": "",
    "firstName": "",
    "lastName": "",
    "XXXXXXXXXX": [{
        "XXX": "",
        "XXX": "",
        "XXX": "",
        "XXX": "",
        "XXX": "",
        "XXX": "",
        "XXX": "",
        "XXX": ""
    }],
    "contact": {
        "contactNumbers": [{
            "type": "",
            "number": ""
        }],
        "emailAddresses": [{
            "type": "",
            "address": ""
        }]
    },
    "XXX": {
        "XXX": {
            "XXX": "",
            "firstName": "",
            "lastName": "",
            "XXX": ""
        },
        "XXX": [{
            "XXX": "",
            "firstName": "",
            "lastName": "",
            "XXX": ""
        }],
        "name": "",
        "XXX": "",
        "XXX": "",
        "XXX": ""
    },
    "XXX": [{
        "name": "",
        "number": ""
    }],
    "XXX": [{
        "code": "",
        "name": "",
        "XXX": "",
        "XXX": ""
    }],
    "XXX": [{
        "code": "",
        "name": "",
        "XXX": "",
        "XXX": ""
    }],
    "XXX": [{
        "name": "",
        "XXX": "",
        "contactNumber": "",
        "emailAddress": "",
        "address": {
            "street1": "",
            "street2": "",
            "suburb": "",
            "city": "",
            "province": "",
            "country": "",
            "postalCode": ""
        }
    }]
} 

所以我一直在嘗試遞歸循環數據,以便在保存文檔之前加密每個字段。 我遇到了以下 package有點工作。 它不會遞歸到 arrays。 我嘗試將文檔轉換為 JSON Object 以使其更易於使用。 除了從文檔 object 中刪除元數據之外,這並沒有多大幫助。

我試圖寫一個草書 function (C# 是我的駕駛室),但我無法訪問 JSON object 的孩子的長度,所以我不能。

如果有人有通過 ZCCADCDEDB567ABAE643E15DCF0974E503Z 文檔遞歸的解決方案,我將不勝感激,因為我很難過。

好的,所以我提到的package成功了。 有一個未指定的選項將 arrays 視為允許迭代器遞歸到 arrays 的對象。 所以工作迭代器如下所示:

let iterator = require('object-recursive-iterator');
iterator.forAll(jsonProfile, (path, key, obj) => {
    obj[key] = 'processed';
}, {treatArrayAsObject: true}); 

希望這對將來的某人有所幫助。

暫無
暫無

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

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