2017-04-21 6 views
0

일부 데이터를 검색하기 위해 다음 코드 (SoundCloudController.js)를 사용하여 SoundCloud API에서 JSON을 구문 분석 할 컨트롤러를 개발 중입니다. 응용 프로그램을 들어서 내가 만든보기로 이동하십시오. "result.ejs", 충돌합니다.Sails.js - 컨트롤러 문제

module.exports = { 

    // Search for something 
    // SoundCloud API reference: 
    // https://developers.soundcloud.com/docs/api/reference#tracks 
    result: function (req, res, next) { 
     SoundCloud.find(function foundSounds(err, sounds) { 
      if (err) return next(err); 

      var http = require('http'); 

      function process_response(webservice_response, sound, callback) { 
       var webservice_data = ""; 
       webservice_response.on('error', function (e) { 
        console.log(e.message); 
        callback("Error: " + e.message); 
       }); 
       webservice_response.on('data', function (chunk) { 
        webservice_data += chunk; 
       }); 

       // Response from query 
       webservice_response.on('end', function() { 
        // Parse everything from the response (JSON) 
        sound_data = JSON.parse(webservice_data); 
        // Find the title of the first match 
        sound.title = sound_data.title; 
        // The duration provided by SoundCloud is in milliseconds 
        // convert to MM:SS format for readability 
        sound.duration = millis_to_min_sec(sound_data.duration); 
        // Logo for SoundCloud 
        sound.logo = 'http://icons.iconarchive.com/icons/sicons/basic-round-social/512/soundcloud-icon.png'; 
        console.log(sound.title + ' ' + sound.duration); 
        callback(); 
       }); 
      }; 

      // Define host, path etc. for the search (JSON returned) 
      function get_sound_data(sound, callback) { 
       //http://api.soundcloud.com/tracks.json?client_id=CLIENT_ID_HERE&q=smile%20like%20you%20mean%20it 
       console.log(sound.title); 
       console.log(sound.duration); 
       options = { 
        host: 'http://api.soundcloud.com', 
        port: 80, 
        path: '/tracks.json?client_id=O3UkayfZTJjNeahVhqTiHcZ5iowrMRpk&q=smile like you mean it&limit=2', // client_id is given above, q='something to search for', limit to 2 results 
        method: 'GET' 
       }; 

       var webservice_request = http.request(options, function (response) { 
        process_response(response, sound, callback) 
       }); 
       webservice_request.end(); 

      }; 

      // Convert milliseconds to MM:SS format (minutes:seconds) 
      function millis_to_min_sec(millis) { 
       var minutes = Math.floor(millis/60000); 
       var seconds = ((millis % 60000)/1000).toFixed(0); 
       return minutes + ':' + (seconds < 10 ? '0' : '') + seconds; 
      }; 

      async.each(sound.sounds, get_sound_data, function(err) { 
       if(err) console.log(err); 
       console.log('done'); 

       res.view({ 
        sound: sound 
       }); 
      }); 
     }); 
    }, 

}; 

로컬 호스트를 방문 할 때 나타나는 오류 메시지 : 1337/음악/결과 :

error: Sending 500 ("Server Error") response: Error (E_UNKNOWN) :: Encountered an unexpected error : ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'where clause' at Query.Sequence._packetToError (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:48:14) at Query.ErrorPacket (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Query.js:83:18) at Protocol._parsePacket (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:280:23) at Parser.write (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Parser.js:73:12) at Protocol.write (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:39:16) at Socket. (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\Connection.js:96:28) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:176:18) at Socket.Readable.push (_stream_readable.js:134:10) at TCP.onread (net.js:548:20) -------------------- at Protocol._enqueue (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:141:48) at PoolConnection.query (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\Connection.js:201:25) at FIND (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\lib\adapter.js:838:20) at afterwards (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\lib\connections\spawn.js:84:5) at C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\lib\connections\spawn.js:40:7 at Ping.onOperationComplete [as _callback] (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\Pool.js:99:5) at Ping.Sequence.end (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:96:24) at Ping.Sequence.OkPacket (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:105:8) at Protocol._parsePacket (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:280:23) at Parser.write (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Parser.js:73:12) at Protocol.write (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:39:16) at Socket. (C:\Users\InWhi\Desktop\ISQA4380\Group-6-Project\node_modules\sails-mysql\node_modules\mysql\lib\Connection.js:96:28) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:176:18) at Socket.Readable.push (_stream_readable.js:134:10) at TCP.onread (net.js:548:20) Details: Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'where clause'

어떤 개선을위한 제안 및/또는 내 문제를 해결하기 위해 솔루션 크게 감사합니다!

+0

엉망으로 보입니다. SoundCloud.find가 올바르게 사운드를 반환합니까? 문제의 원인을 찾아 내십시오. – yBrodsky

+0

'SoundCloud.find '란 무엇입니까? – Sangharsh

+0

SoundCloud는 모델의 이름이고 _Modelname_.find는 Sails.js에 내장 된 메소드입니다. –

답변

1

으로 갈 때 music 모델에 대한 청사진 경로를 실수로 들르는 것처럼 보입니다. URL 형식이 /:model/:id 인 ID는 result입니다. 경로 구성이 해당 형식을 무시하도록 설정되어 있고 SoundCloudController.result을 가리키고 있는지 확인하십시오.

+0

사실 그것은 문제 (또는 적어도 그 일부)였습니다. 당신이 말했듯이, 내 견해는 폴더 "음악"에있었습니다. 해당 폴더의 이름을 "soundcloud"로 변경하여 오류를 해결했습니다. 감사합니다. –