Javascript Node JS:在JSON上存储音乐元数据

Javascript Node JS:在JSON上存储音乐元数据,javascript,json,node.js,metadata,Javascript,Json,Node.js,Metadata,我是NodeJS中的乞丐,我很难构建JSON对象 我找到了一个模块来查找mp3文件的元数据,我想将这些信息存储在JSON obj上 我的应用程序的行为如下: 阅读我的音乐目录。 对于目录中的每个文件,提取其信息并将其存储在结构jsonSong中。将jsonSong推入名为jsonObj的结构中。 创建jsonObj的console.log以查看结果。 代码如下: var fs = require('fs'); var mm = require('musicmetadata'); fs.read

我是NodeJS中的乞丐,我很难构建JSON对象

我找到了一个模块来查找mp3文件的元数据,我想将这些信息存储在JSON obj上

我的应用程序的行为如下:

阅读我的音乐目录。 对于目录中的每个文件,提取其信息并将其存储在结构jsonSong中。将jsonSong推入名为jsonObj的结构中。 创建jsonObj的console.log以查看结果。 代码如下:

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: '' } ] }

谢谢您的时间。

在填充数据之前,您必须等待回调执行,您可以使用“完成”事件

parser.on('done', function (err) {
  console.log(jsonObj);
});

哦,新手的错误。谢谢: