节点js表示试图将orm json传递给客户端

在我的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(); } })); 

在我的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)); }; 

在我的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" // } }; 

我得到空的结果。 如果我直接从question_api.js返回,它的工作原理。

我不知道你正在使用的库,但考虑到你给callback作为参数, find可能是一个asynchronousfunction。 您将不得不相应地更改您的代码:

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]); }); };