Ember: 对store.query 的响应应该是一个数组,但它是一条记录错误

Ember: The response to store.query is expected to be an array but it was a single record Error

我不断收到错误消息:

Error: Assertion Failed: The response to store.query is expected to be an array but it was a single record. Please wrap your response in an array or use store.queryRecord to query for a single record.

这是我的后端:

router.route('/')
.post(parseUrlencoded, parseJSON, function (request, response) {
    var advancedStanding = new models.AdvancedStandings(request.body.advancedStanding);
    advancedStanding.save(function (error) {
        if (error) response.send(error);
        response.json({advancedStanding: advancedStanding});
    });
})
.get(parseUrlencoded, parseJSON, function (request, response) {
    //var l = parseInt(request.query.limit);
    //var o = parseInt(request.query.offset);
    var AdvancedStanding = request.query.filter;
    if (!AdvancedStanding) {
        models.AdvancedStandings.find(function (error, advancedStandings) {
            if (error) response.send(error);
            response.json({advancedStanding: advancedStandings});
        });
        //models.AdvancedStandings.paginate({}, { offset: o, limit: l },
        //    function (error, students) {
        //        if (error) response.send(error);
        //        response.json({advancedStanding: advancedStandings.docs});
        //    });
    } else {
        //        if (Student == "residency")
        models.AdvancedStandings.find({"studentInfo": AdvancedStanding.studentInfo}, function (error, advancedStandings) {
            if (error) response.send(error);
            console.log(advancedStandings);
            response.json({advancedStudent: advancedStandings});

        });
    }
});

这是我的前端:

showStudentData: function (index) {
this.set('currentStudent', this.get('studentsRecords').objectAt(index));
this.set('studentPhoto', this.get('currentStudent').get('photo'));
var date = this.get('currentStudent').get('DOB');
var datestring = date.toISOString().substring(0, 10);
this.set('selectedDate', datestring);

var self2 = this;
this.get('store').query('advanced-standing',{filter:{studentInfo:'585df32e0bf2ba5ea6951592'}})
.then(function(records123){
  console.log(records123);
});

}

有人知道这是怎么回事吗?

谢谢。

query 函数需要多个结果。所以你需要使用 queryRecord

this.get('store').queryRecord('advanced-standing',{filter:{studentInfo:'585df32e0bf2ba5ea6951592'}})
.then(function(records123){
  console.log(records123);
});

或将您的响应包装在数组文字中

if (!AdvancedStanding) {
    models.AdvancedStandings.find(function (error, advancedStandings) {
        if (error) response.send(error);
        response.json([{advancedStanding: advancedStandings}]);
        // you were returning a single object
        // note the array is now wrapping your previous result

    });
    //models.AdvancedStandings.paginate({}, { offset: o, limit: l },
    //    function (error, students) {
    //        if (error) response.send(error);
    //        response.json([{advancedStanding: advancedStandings.docs}]);
              // you were returning a single object
              // note the array is now wrapping your previous result
    //    });
} else {
    //        if (Student == "residency")
    models.AdvancedStandings.find({"studentInfo": AdvancedStanding.studentInfo}, function (error, advancedStandings) {
        if (error) response.send(error);
        console.log(advancedStandings);
        response.json([{advancedStudent: advancedStandings}]);
        // you were returning a single object
        // note the array is now wrapping your previous result
    });
}