我是Node JS的初学者,我在尝试构建JSON对象时遇到了麻烦。
我找到了一个模块来查找mp3文件的元数据,我想将这些信息存储在JSON obj上。
我的应用程序的行为如下:
以下是代码:
var fs = require('fs');
var mm = require('musicmetadata');
fs.readdir('./music/', function(err,files) {
if(err) throw err;
var jsonObj = {
songs: []
};
files.forEach(function(file){
var jsonSong = {
title:"",
artist:"",
duration:"",
pic:""
}
var parser = new mm(fs.createReadStream('./music/'+file));
parser.on('title', function(result) {
jsonSong.title = result;
});
parser.on('albumartist', function(result) {
jsonSong.artist = result;
});
parser.on('duration', function(result) {
jsonSong.duration = result;
});
parser.on('picture', function(result) {
jsonSong.pic = result;
});
jsonObj.songs.push(jsonSong);
});
console.log(jsonObj);
});
我的问题是“jsonSong”似乎是空的,这是最后一个console.log的结果(我的音乐目录上有3首歌曲,所以我有3个声明结构):
{ songs:
[ { title: '', artist: '', duration: '', pic: '' },
{ title: '', artist: '', duration: '', pic: '' },
{ title: '', artist: '', duration: '', pic: '' } ] }
感谢您的时间。
答案 0 :(得分:0)
在填充数据之前,您必须等待回调执行,您可以使用done事件。
parser.on('done', function (err) {
console.log(jsonObj);
});