#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, чтобы решить свою проблему:
Комментарии:
1. Я думаю, это может быть связано с нечувствительностью к регистру. Добавление кавычек не будет иметь никакого эффекта 🙂
2. Если это было причиной, по которой я буду плакать, хахах (не совсем так) Также спасибо за ответ
3. Было бы здорово, если бы мой пример соответствовал цели, ха-ха!