3

エラーは次のとおりです。 http://puu.sh/lXzja/f773fb6c9a.png

ユーザー モデルの主キーはユーザー名です。私のルートの主キーはルート名です。jsonapi.org の仕様に従って、私の API は data:{} 内で json を返します。したがって、js-data が要求するように、id 属性は最上位にはありません。これが、「ユーザー」の afterFind で data.data を返す理由です。「ルート」でそのようなことをしようとしましたが、それはルートの配列です。beforeInject のコンソール ログインでは、次の情報が得られます。

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);
                    });
                });
            }
        }
4

1 に答える 1