我在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结构需要改变,请指出它。
由于
答案 0 :(得分:0)
如果api
和key
应该位于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'