#javascript #node.js #configuration #yaml #config
#javascript #node.js #конфигурация #yaml
Вопрос:
У меня есть этот файл конфигурации YAML:
sheets:
list1:
name: 'sheet1'
sql: 'SELECT'
list2:
name: 'sheet2'
sql: 'SELECT'
list3:
name: 'sheet3'
sql: 'SELECT'
Я использую библиотеку 'js-yaml'
для разбора конфигурации YAML.
Я хочу, например, чтобы консоль регистрировала все имена списков. Как я могу это сделать? У меня есть что-то подобное в JS:
for(sheet in config.sheets) {
console.log(sheet.name);
}
когда я делаю это console.log(sheet)
в цикле, я получаю list1, list2, list3, но console.log(sheet.name)
в цикле не работает.
Комментарии:
1. Вероятно, зависит от того, какую библиотеку вы используете для анализа YAML. Самый быстрый способ решить проблему, когда у вас «слишком много времени», — это выполнить поиск в Интернете и посмотреть, как другие люди решили ее, а не ждать ответа здесь. Это решаемая проблема.
2. Да, я делаю и то, и другое …. поиск в Google и опрос. Но у меня нет времени на конфигурации, поэтому я могу сделать что-нибудь еще, пока кто-нибудь, возможно, поможет мне там. Библиотека, которую я использую, называется ‘js-yaml’
3. Я не уверен, что понимаю — если вы используете js-yaml, который преобразует файл конфигурации в объект, в чем конкретная проблема? Даже если бы это было непонятно, простое удаление проанализированного документа наверняка дало бы некоторое представление о том, что делать с данными?
Ответ №1:
Вам следует использовать такой инструмент, как js-yaml , чтобы сначала преобразовать ваш yaml
в js literal
.
const yaml = require('js-yaml');
let data = yaml.load(config);
Он вернет данные следующим образом:
{
sheets: {
list1: {
name: "sheet1",
sql: 'SELECT'
},
......other lists
}
}
тогда вы можете просто
const data = {
sheets: {
list1: {
name: "sheet1",
sql: 'SELECT'
},
list2: {
name: "sheet2",
sql: 'SELECT'
}
}
}
const name = Object.values(data.sheets).map(item => item.name)
console.log(values);