断言失败:预期序列化程序为“queryRecord”响应返回的主要数据是单个对象,但它是一个数组

Assertion Failed: Expected the primary data returned by the serializer for a `queryRecord` response to be a single object but instead it was an array

我几天前刚遇到这个错误。每当我尝试 运行

this.store.queryRecord('user', {filter:{username : params.username}});

它显示错误:断言失败:预期序列化程序为 queryRecord 响应返回的主要数据是单个对象,但它是一个数组。

这里有什么问题?

你的后端应该return一个对象而不是数组。

找到了避免这个问题的方法。而不是 queryRecord(这似乎被 ember-data developer team 改变了),我使用 store.query 这样的:

this.store.query('user', {filter:{username : params.username}}).then(function(user){return user.get('firstObject')});

我遇到过类似情况,有2条路线

this.get('/clients', function() {return {data: [allClientsDataJson]};});
this.get('/clients:id', function() {return {data: [oneClientDataJson]};});

但是在使用 queryRecord 之后我得到了同样的错误。问题是第二条路线从未被调用过,而第一条路线在这两个原因中都被调用过。因此,在第二次调用中出现了包含所有结果的数组,而不是单一结果。

知道总是调用第一个后​​,我将其编辑为:

    this.get('/clients', function(db, request) {
    if(!Ember.isEmpty(request.queryParams)) { return oneClientDataJson 
    } else { return allClientsDataJson }