Навигация по файлам yaml с использованием переменных

#javascript #node.js #yaml

#javascript #node.js #yaml

Вопрос:

Название немного неудачное, но я постараюсь сделать все возможное, чтобы объяснить это.

То, что я пытаюсь сделать, это в значительной степени перемещаться по файлу yaml, как обычно

 var doc = yaml.safeLoad(fs.readFileSync('./settings.yml', 'utf8'));
console.log(doc.admin.permissions);
  

за исключением того, что я хочу иметь возможность делать это:

 var adminrolename = "admin1";
console.log(doc.adminrolename.permissions);
  

Есть ли способ, которым я мог бы это сделать? Я искал вокруг и, похоже, не могу найти ответ, возможно, я просто ищу не то, что нужно, поэтому извините, если у этого есть очевидный ответ

Комментарии:

1. вы пробовали doc[adminrolename].permissions ?

2. Уверен на 90%, что я это сделал, но я проверю еще раз на всякий случай (я отредактирую свой пост, указав, что я пробовал это) -обновление, не сработало: / Другое обновление, просто возникла мысль, которая может сработать, извините, если это сработает, и не осознал этого раньше, скоро обновится

Ответ №1:

Это то, что я сделал для подтверждения концепции. Помните, что ключи чувствительны к регистру, поэтому doc["admin"] не будут совпадать с doc["Admin"]

Файл Yaml:

 doc:
  admin:
    permissions:
      - abc
      - xyz
  admin1:
    permissions:
      - abc1
      - xyz1
  

JS-файл:

 const yaml = require('js-yaml');
const fs = require('fs');
try {
    const config = yaml.safeLoad(fs.readFileSync('test.yml', 'utf8'));
    const doc = config.doc;
    console.log(doc["admin"].permissions);
    console.log(doc["admin1"].permissions);
} catch (e) {
    console.log(e);
}
  

Результат:

 [ 'abc', 'xyz' ]
[ 'abc1', 'xyz1' ]
  

Ответ №2:

Извините всех за неудобства, @Kinaan Khan Sherwani был прав, я действительно пробовал, но я перепутал файл yaml.

 doc[adminrolename].permissions
  

Это и есть правильный код

Я не заключал разделы в кавычки … facepalms. Вот каким был исходный YAML:

каким было исходное изображение

Это то, на что я изменил YAML, чтобы решить свою проблему:

на что я изменил yaml

Комментарии:

1. Я думаю, это может быть связано с нечувствительностью к регистру. Добавление кавычек не будет иметь никакого эффекта 🙂

2. Если это было причиной, по которой я буду плакать, хахах (не совсем так) Также спасибо за ответ

3. Было бы здорово, если бы мой пример соответствовал цели, ха-ха!