エラーは次のとおりです。 http://puu.sh/lXzja/f773fb6c9a.png
ユーザー モデルの主キーはユーザー名です。私のルートの主キーはルート名です。jsonapi.org の仕様に従って、私の API は data:{} 内で json を返します。したがって、js-data が要求するように、id 属性は最上位にはありません。これが、「ユーザー」の afterFind で data.data を返す理由です。「ルート」でそのようなことをしようとしましたが、それはルートの配列です。beforeInject のコンソール ログインでは、次の情報が得られます。
構成は次のとおりです。
DS.defineResource({
name: 'users',
idAttribute: 'username',
basePath: apiEndpoint,
relations: {
hasMany: {
routes: {
localField: 'routes',
foreignKey: 'username'
}
}
},
// set just for this resource
afterFind: function(resource, data, cb) {
// do something more specific to "users"
cb(null, data.data);
}
});
DS.defineResource({
name: 'routes',
idAttribute: 'routename',
basePath: apiEndpoint,
cacheResponse: true,
relations: {
belongsTo: {
users: {
parent: true,
localKey: 'username',
localField: 'users'
}
}
},
beforeInject: function(resource, data) {
// do something more specific to "users"
console.log(data);
return data.data.routes;
}
});
ルートをロードしようとしたが、エラーが発生した場所は次のとおりです。
resolve: {
user: function($route, DS) {
var username = $route.current.params.username;
return DS.find('users', username).then(function(user) {
DS.loadRelations('users', user.username, ['routes']).then(function(user) {
console.log(user);
}, function(err) {
console.log(err);
});
});
}
}