【问题标题】:Ember get requestEmber 获取请求
【发布时间】:2016-03-10 22:35:04
【问题描述】:

我正在使用 MongoDB、Ember、Express 和 Node 制作应用程序。

我的成绩模型定义如下:

export default DS.Model.extend({
    mark: DS.attr(),
    section: DS.attr(),
    student: DS.belongsTo('student', { async: true }),
    coursecode: DS.belongsTo('coursecode', { async: true }),
    programrecord: DS.belongsTo('programrecord', { async: true })
});

而我的学生模型定义如下:

export default DS.Model.extend({
  number: DS.attr(),
  firstName: DS.attr(),
  lastName: DS.attr(),
  DOB: DS.attr(),
  resInfo: DS.belongsTo('residency',{ async: true }),
  gender: DS.belongsTo('gender',{ async: true }),
  country: DS.belongsTo('country',{ async: true }),
  province: DS.belongsTo('province',{ async: true }),
  city: DS.belongsTo('city',{ async: true }),
  grades: DS.hasMany('grade', { async: true }),
});

我正在发出获取请求以查询具有特定标记的所有等级:

GET to /grades?mark=100 

我也在发出一个 get 请求来查询属于特定学生的成绩(不确定我是否正确执行此操作,我正在传递学生对象的 ID):

GET to /grades?student=56d33a7896c31b6b1e40446a

如何在 server.js 文件中定义 路由 来响应这个问题,这样我就可以只返回标记为 100 的成绩对象,或者只返回属于的成绩对象一个学生?

【问题讨论】:

  • 可以查看请求参数,判断客户端发送的是什么参数,然后根据该参数返回

标签: node.js mongodb express ember.js


【解决方案1】:

这是用于响应特定请求的路由(即获取标记为 xxx 的成绩对象或获取属于 id yyy 学生的成绩对象),而不是返回所有成绩:

app.route('/grades')
.post(function (request, response) {
    var grade = new GradeModel(request.body.grade);
    grade.save(function (error) {
        if (error) response.send(error);
        response.json({grade: grade});
    });
})
.get(function (request, response) {
    var Grade = request.query.grade;
    var mark = request.query.mark;
    var student = request.query.student;
    console.log(Grade);
    console.log(mark);
    console.log(student);

    if (student) {
        GradeModel.find({"student": student}, function (error, grades) {
            if (error) response.send(error);
            response.json({grade: grades});
        });
    }
    else if (mark) {
        GradeModel.find({"mark": mark}, function (error, grades) {
            if (error) response.send(error);
            response.json({grade: grades});
        });
    }
    else {
        GradeModel.find(function (error, grades) {
            if (error) response.send(error);
            response.json({grade: grades});
        });
    }
});

这是组件内部操作中的查询:

   import Ember from 'ember';

   export default Ember.Component.extend({
        isGradesFormEditing: false,
        store: Ember.inject.service(),
        gradeModel: null,
        grades: null,
        ID: null,
        actions: {
            viewGrades () {
            var self = this;
            var myStore = this.get('store');
            myStore.query('grade', {student: this.get('ID')}).then(function (grades) {
                    console.log(grades);
                    self.set('grades', grades);
                });
            }
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2018-01-09
    • 2015-10-31
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    相关资源
    最近更新 更多