【发布时间】:2017-04-28 23:16:20
【问题描述】:
嗯,我遇到了 ember 和模型的问题,因为我想使用 Express 从 Mongoose API 返回 JSON,问题是路由正确返回了 json,但是当我尝试捕捉它时前端(Ember)它像 null 一样返回。
在我的 Ember 路线中,我有以下内容:
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params){ //i'm getting params from the url as a paremeter
return Ember.RSVP.hash({
questions: this.store.find('examGroupQuestion/show-q', params.questionsGroup_id)
});
}
});
重要的是这条路由是另一个路由的子路由,接下来我向您展示路由器:
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType,
rootURL: config.rootURL
});
Router.map(function() {
this.route('examGroupQuestion',function() {
this.route('showQ',{
path: 'showQ/:questionsGroup_id'
});
});
});
export default Router;
最后这是我的模型:
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
export default Model.extend({
/* the atributte array it's defined in a transform */
description: attr('string'),
matrix_eval: attr('array'),
level: attr('string'),
rows: attr('array'),
randomize_row: attr('boolean'),
columns: attr('array'),
randomize_col: attr('boolean'),
});
有了这个,我们尝试将 json 从路由模型传递到模板,但记录始终显示它为空,如下图所示,我们可以看到 REST 服务器响应和错误:
在 REST 服务器中,我有这条路线:
router.route('/examGroupQuestion/showQs/:qid').get(function(req,res){ questions_group.getQuestions(req,res, req.params.qid); });
在 api 中我有以下内容:
module.exports.getQuestions = function(req,res,id){
QuestionGroup.findById(id).exec(function(err, questiongroup){
if(err)
{
res.send(err);
}
function done(result){
res.json({questionsGroup:result});
}
var result = [];
var l = questiongroup.questions.length;
for(var j = 0; j < l; j++)
{
(function(j){
Questions.findById(questiongroup.questions[j].id).exec(function(err, questions){
if(err)
{
res.send(err);
}
result.push(questions);
if(l === j+1)
{
done(result);
}
});
})(j);
}
});
};
有谁知道为什么会这样,感谢任何帮助。
【问题讨论】:
标签: json node.js express ember.js mongoose