簡體   English   中英

節點JS:在JSON上存儲音樂元數據

[英]Node JS: storing music metadata on JSON

我是Node JS的入門者,嘗試構建JSON對象時遇到麻煩。

我已經找到一個模塊來查找mp3文件的元數據,並且我想將此信息存儲在JSON obj上。

我的應用程序的行為如下:

  1. 閱讀我的“音樂”目錄。
  2. 對於目錄中的每個文件,提取其信息並將其存儲在結構“ jsonSong”中。 將“ jsonSong”推入名為“ jsonObj”的結構中。
  3. 創建console.log的“ jsonObj”以查看結果。

這是代碼:

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

謝謝你的時間。

您必須等待回調執行后才能填充數據,可以使用done事件。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM