从字典YAML JS列表中访问键值

时间:2018-03-08 22:52:08

标签: javascript node.js yaml

我在YAML中有一个字典列表,如此

- movies:
  api   : 'api name'
  key   : 'value of key'
- music:
  api   : 'api name'
  key   : 'value of key'

我正在使用' js-yaml'并从config.yml读取

var fs = require('fs');
var yaml = require('js-yaml');
var config = yaml.safeLoad(fs.readFileSync('./config.yml'));
...
app.get('/api/hello', (req, res) => {
  let hello = { homehost: 'Hello'};
  res.json(config['movies']['api']); // doesnt work
  //res.json(config.movies['api']); doesnt work
  //res.json(config.movies.api); doesnt work
  //res.json(String(config.movies.api)); doesnt work
  //res.json(config); works but returns the full yaml
});
...

返回TypeError: Cannot read property 'path' of undefined

我希望js从api获取movies字段的值或music var config,而不转换为json。 我尝试了不同的东西,但它没有用。如果yaml结构需要改变,请指出它。

由于

1 个答案:

答案 0 :(得分:0)

如果apikey应该位于movies / music键下,那么您需要正确缩进它们:

- movies:
    api   : 'api name'
    key   : 'value of key'
- music:
    api   : 'api name'
    key   : 'value of key'

这是词典的词典列表,相当于以下JSON:

[
  {
    "movies": { "api": "api name", "key": "value of key" }
  },
  {
    "music": { "api": "api name", "key": "value of key" }
  }
]
但是,这似乎与你想要的不相符。根据您的使用config['movies'],您只需要一本字典(字典),而不是列表:

movies:
  api   : 'api name'
  key   : 'value of key'
music:
  api   : 'api name'
  key   : 'value of key'