Estoy tratando de editar un archivo template-yaml usando una función js. La función js obtendrá un name of organization: org y esto reemplazará los valores correspondientes en template-yaml y generará un org-yaml .
Mi archivo template-yaml se ve así:
Organizations: - &Org3 # this line here is important. Name: Org3Name ID: Org3IDEstoy usando la siguiente función:
const yaml = require('js-yaml'); const fs = require('fs'); const changeConfig = (org) => { // doc.Organizations[0] = org; doc.Organizations[0].Name = org + 'Name'; doc.Organizations[0].ID = org + 'ID'; fs.writeFileSync('new_file.yaml', yaml.dump(doc)); } let doc = yaml.load(fs.readFileSync('./sample_yaml.yaml', 'utf-8')); changeConfig('Org1');lo que obtengo es esto:
Organizations: - Name: Org1MSP ID: Org1MSP¿Hay alguna forma en que pueda modificar para obtener una estructura como esta:
Organizations: - Org1 # notice this Name: Org1MSP ID: Org1MSPKalinda, puedes probar esto:
const yaml = require('js-yaml'); const fs = require('fs'); const changeConfig = (org) => { doc.Organizations[0][org] = {}; delete doc.Organizations[0].Org; doc.Organizations[0][org].Name = org + 'Name'; doc.Organizations[0][org].ID = org + 'ID'; fs.writeFileSync('new_file.yaml', yaml.dump(doc)); } let doc = yaml.load(fs.readFileSync('./sample_yaml.yaml', 'utf-8')); changeConfig('Org2');Ejemplo de archivo yaml:
Organizations: - Org: Name: OrgName ID: OrgIDsi es correcto, necesita cambiar el nombre o crear una nueva clave en el archivo yaml.
Resultado:
Organizations: - Org2: Name: Org2Name ID: Org2IDCuando usa métodos de carga, estos métodos transforman su archivo yaml en un objeto simple. Para que pueda tener un mejor control sobre su objeto dentro de javascript.