簡體   English   中英

如何使用NodeJS動態更新環境變量鍵名

[英]How to update environment variable key name dynamically using NodeJS

我正在動態讀取環境變量(鍵和值)並形成以下數組:

commands: [
    {
        name: 'PRODUCT_NAME',
        value: 'iPhone'
    },
    {
        name: 'PRODUCT_PRICE',
        value: '1232'
    },
    {
        name: 'PRODUCT_TYPE',
        value: 'Electronics'
    },
    {
        name: 'PRODUCT_ID',
        value: 'SKU29389438'
    },
    {
        name: 'LOG_ENABLED',
        value: 'TRUE'
    },    
]

我想動態更新這兩個屬性的keyPRODUCT_TYPE -> myapp.property.type.eventPRODUCT_ID -> myapp.property.product.enabled

最終輸出應如下所示:

commands: [
    {
        name: 'PRODUCT_NAME',
        value: 'iPhone'
    },
    {
        name: 'PRODUCT_PRICE',
        value: '1232'
    },
    {
        name: 'myapp.property.type.event',
        value: 'Electronics'
    },
    {
        name: 'myapp.property.product.enabled',
        value: 'SKU29389438'
    },
    {
        name: 'LOG_ENABLED',
        value: 'TRUE'
    },    
]

請在下面找到我的product.js代碼:

const commands = (Object.entries(process.env).map(([key, value]) => ({ name: key, value })))
console.log("commands : ", commands);

我是 Nodejs 的新手,有人可以幫助我如何動態更新這兩個鍵並形成最終數組嗎?

您的幫助將不勝感激!

1)您可以循環並將name更改為:

 const obj = { commands: [ { name: "PRODUCT_NAME", value: "iPhone", }, { name: "PRODUCT_PRICE", value: "1232", }, { name: "PRODUCT_TYPE", value: "Electronics", }, { name: "PRODUCT_ID", value: "SKU29389438", }, { name: "LOG_ENABLED", value: "TRUE", }, ], }; obj.commands.forEach((o) => { if (o.name === "PRODUCT_TYPE") o.name = "myapp.property.type.event"; if (o.name === "PRODUCT_ID") o.name = "myapp.property.product.enabled"; }); console.log(obj.commands);
 /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

2)你也可以這樣做:

one-liner

obj.commands.forEach((o) => (o.name = changes[o.name] ?? o.name));

 const obj = { commands: [{ name: "PRODUCT_NAME", value: "iPhone", }, { name: "PRODUCT_PRICE", value: "1232", }, { name: "PRODUCT_TYPE", value: "Electronics", }, { name: "PRODUCT_ID", value: "SKU29389438", }, { name: "LOG_ENABLED", value: "TRUE", }, ], }; const changes = { PRODUCT_TYPE: "myapp.property.type.event", PRODUCT_ID: "myapp.property.product.enabled", }; obj.commands.forEach((o) => { if (changes[o.name]) o.name = changes[o.name]; }); console.log(obj.commands);
 /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

暫無
暫無

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

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