in my app.js
question = require('./routes/question_api'),
app.use(orm.express("mysql://root@127.0.0.1/daat", {
define: function (db, models, next) {
var question_model = db.define('questions', {
id : Number,
..... more definitions
}
});
models.question = question_model;
next();
}
}));
in my question_api.js
var questions = require('../lib/questions/questions.js');
//NEW Question
//Get Question by ID
//Get Question By Category
exports.list = function(req, res){
res.json(questions.list_top_rates(req, res));
};
in my questions.js
exports.list_top_rates = function(req, res) {
var limit = req.limit || 20;
var final_result = {"1": {}};
//Z means descending
req.models.question.find({}, limit, ["rating", "Z"], function(err, questions) {
final_result = questions;
return final_result[0];
});
return final_result;
// return final_result;
// return {
// 1: "first question , limit is " + limit,
// 2: "second question",
// 3: "third question",
// 4: "forth question"
// }
};
I get empty results. if i return directly from question_api.js, it works.
I don't know the library you are using, but considering you are given a callback as parameter, find
is probably an asynchronous function. You will have to change your code accordingly:
question_api.js:
exports.list = function(req, res){
questions.list_top_rates(req, function(final_result) {
res.json(final_result);
});
};
questions.js:
exports.list_top_rates = function(req, callback /* the parameter res is not needed anymore */) {
var limit = req.limit || 20;
var final_result = {"1": {}};
//Z means descending
req.models.question.find({}, limit, ["rating", "Z"], function(err, questions) {
final_result = questions;
callback(final_result[0]);
});
};