【问题标题】:Navigating through yaml files using variables使用变量浏览 yaml 文件
【发布时间】:2019-03-06 07:05:28
【问题描述】:

标题有点糟糕,但我会尽力解释它。

我要做的就是像往常一样浏览一个 yaml 文件

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

除了我希望能够做到这一点:

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

有没有办法可以做到这一点?我一直在环顾四周,似乎找不到答案,我可能只是在寻找错误的东西,如果有明显的答案,请见谅

【问题讨论】:

  • 你试过doc[adminrolename].permissions吗?
  • 90% 当然我做到了,但我会再次检查以防万一(我会编辑我的帖子,说明我试过了)-更新,没用:/另一个更新,只是有一个可能有用的想法,对不起,如果它没有尽快意识到它,将很快更新

标签: javascript node.js yaml


【解决方案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 更改为以解决我的问题:

    【讨论】:

    • 我认为这可能是由于不区分大小写。添加引号不会有任何效果:)
    • 如果那是我会哭的原因哈哈(不是真的)也感谢您的回复
    • 如果我的例子能达到目的,点赞会很棒,哈哈!
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2019-01-06
    • 2020-07-07
    • 2021-12-07
    • 1970-01-01
    • 2019-09-27
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多