[英]Sails.js - Issues with controller
I'm developing a controller to parse JSON from SoundCloud's API, using the following code (SoundCloudController.js), in order to retrieve some data. 我正在开发一个控制器,使用以下代码(SoundCloudController.js)从SoundCloud的API解析JSON,以便检索一些数据。 When I lift the application, and go to a view I created;
当我提起应用程序并转到我创建的视图时; "result.ejs", it crashes.
“ result.ejs”,它崩溃了。
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
});
});
});
},
};
The Error message that appears when visiting localhost:1337/music/result: 访问localhost:1337 / music / result时出现的错误消息:
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.
错误:正在发送500(“服务器错误”)响应:错误(E_UNKNOWN)::遇到意外错误:ER_BAD_FIELD_ERROR:Query.Sequence._packetToError(C:\\ Users \\ InWhi \\ Desktop)的“ where子句”中的未知列“ NaN” \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ protocol \\ sequences \\ Sequence.js:48:14)在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 Parser.write(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql中的\\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ protocol \\ Protocol.js:280:23) \\ node_modules \\ mysql \\ lib \\ protocol \\ Parser.js:73:12)在Protocol.write(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ protocol \\ Protocol.js:39:16)。 (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:\\
(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ Connection.js:96:28)在emitOne(events.js:96:13)在TCP.onread(net.js:548:20)的Socket.Readable.push(_stream_visible.js:134:10)的可读AddChunk(_stream_read.js:176:18)的Socket.emit(events.js:188:7) )-------------------- at Protocol._enqueue(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules在PoolConnection.query(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ Connection中的\\ mysql \\ lib \\ protocol \\ Protocol.js:141:48)的.js:201:25)在FIND(C:\\用户\\ InWhi \\桌面\\ ISQA4380 \\组-6-项目\\ node_modules \\帆MySQL的\\ lib中\\ adapter.js:838:20)在事后(C:\\用户\\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ lib \\ connections \\ spawn.js:84:5)位于C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ lib \\ connections \\ spawn.js:40:7在Ping.onOperationComplete [作为_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.
Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ Pool.js:99:5)位于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)位于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)位于Protocol._parsePacket(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6- Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ protocol \\ Protocol.js:280:23)在Parser.write(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-在Protocol.write(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\中的mysql \\ node_modules \\ mysql \\ lib \\ protocol \\ Parser.js:73:12) lib \\ protocol \\ Protocol.js:39:16)。 (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'
(C:\\ Users \\ InWhi \\ Desktop \\ ISQA4380 \\ Group-6-Project \\ node_modules \\ sails-mysql \\ node_modules \\ mysql \\ lib \\ Connection.js:96:28)在emitOne(events.js:96:13)在TCP.onread(net.js:548:20)的Socket.Readable.push(_stream_visible.js:134:10)的可读AddChunk(_stream_read.js:176:18)的Socket.emit(events.js:188:7) )详细信息:错误:ER_BAD_FIELD_ERROR:“ where子句”中的未知列“ NaN”
Any suggestions for improvements, and/or solutions to fix my problem, are greatly appreciated! 非常感谢您提出的任何改进建议和/或解决我的问题的解决方案!
It seems like you are inadvertently hitting a blueprint route for a model called music
when you go to localhost:1337/music/result
. 转到
localhost:1337/music/result
时,您似乎无意中碰到了名为music
的模型的蓝图路线。 It is taking result
as the ID in the URL format of /:model/:id
. 它以URL格式
/:model/:id
形式将result
作为ID。 Make sure your route config is set to override that format and point to SoundCloudController.result
. 确保将路由配置设置为覆盖该格式,并指向
SoundCloudController.result
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.