2017-08-18 9 views
0

node.jsループバックサーバーでオブジェクトをロードしようとしていますが、同じクエリで複数の関連オブジェクトをロードしたいとします。これらの関連オブジェクトは異なる深さにあります。これは、クエリです:LoopBack/Node.jsクエリの複数の深さに複数の要素が含まれています

/api/MyUsers/114?filter[include][institutes]=institute&filter[include]=departments&filter[include]=profiles 

お知らせその[機関] =研究所は二つのレベルと部門プロファイル一つだけを持っています。

これは私にエラーを返します: 500内部サーバーエラー。エラー:ユーザーモデルにリレーション "0"が定義されていません。 Node.jsのデバッグで

私は、最終的なJSONクエリが発生したことに気づい間違っているようだ。ここでは

{ include: 
    { '0': 'departments', 
     '1': 'profiles', 
     institutes: 'institute' } }, 
    ... 
} 

はMyUserとのモデルである:

{ 
    "name": "MyUser", 
    "plural": "MyUsers", 
    "base": "User", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "mixins": { 
    "Versioning": true, 
    "Tenant": true 
    }, 
    "properties": { 
    "name": { 
     "type": "string", 
     "required": true 
    }, 
    "email": { 
     "type": "string" 
    } 
    } 
    "validations": [], 
    "relations": { 
    "departments": { 
     "type": "hasMany", 
     "model": "UserDepartment", 
     "foreignKey": "user_id" 
    }, 
    "institutes": { 
     "type": "hasMany", 
     "model": "UserInstitute", 
     "foreignKey": "user_id" 
    }, 
    "profiles": { 
     "type": "hasMany", 
     "model": "UserProfile", 
     "foreignKey": "user_id" 
    }, 
    }, 
    "acls": [], 
    "methods": {} 
} 

誰がこの問題に直面しています?ループバックのバグですか?もしそうなら、私は解決策のためにどのように回り込むことができますか?

答えて

0

500内部サーバーエラー。エラー:ユーザーモデルにリレーション "0"が定義されていません。

このエラーは、ユーザーモデルにdepartamentsという名前の関係がないことを示しています。ユーザーモデルの定義では、departamentsモデルのリレーションシップを追加したことを確認してください。 (departamentsは、英語の単語であればところで、それはdepartmentsが正しい、スペルの問題がある。)

このlinkが言うように:

An include filter enables you to include results from related models in a query, for example, models that have belongsTo or hasMany relations, to optimize the number of requests.

このリンクはあなたのための関係を定義するためにあなたを助けることができますモデル:あなたは、組み込みのUserモデルを使用している場合

https://strongloop.com/strongblog/defining-and-mapping-data-relations-with-loopback-connected-models/

、あなたがリンク以下のようにそれを拡張することができます言う:

コメントの後

https://loopback.io/doc/en/lb3/Extending-built-in-models.html

編集:フィルタについて

もう一つの説明:

フィルタの意味[含める] [機関は] =研究所フィルタは次のとおりです。

は '研究機関' を含めますこれはユーザーの関係であり、「機関」の関係である「機関」も含まれています。 私のプロジェクトでこの機能をテストしたところ、うまくいきました。

+0

問題は、部門が定義されていることです。最終的なインクルードJSONが正しく生成されていないことがわかるように、 '0'はそこにあるべきではないので、 '0'がリレーションの場合のように動作します。 – Vanderson

+0

あなたのモデルを質問にも追加できますか? Loopbackは、すべてのインクルードがUserモデルに関連していると想定しています。モデル定義に、どのレベルにどのようなレベルを含めるべきかを表示できますか? –

+0

質問に上記のモデルを追加しました。 – Vanderson

関連する問題