2017-01-22 3 views
1

APIの制約があるため、モデル結果の全範囲を保持したいので、クエリの属性をフィルタリングしないようにしたいが、特定の属性を取得したいクエリが値を返した後のインスタンスから取得します。Sequelizeインスタンスをフィルタリングする

ので、代わりにこの:例では、クエリ結果自体にいくつかのインスタンスメソッドを使用することにより

const attributes = ['firstName', 'lastName']; 
const user = await User.findById(1); 
const displayUser = user.getAttributes(attributes); 

(「のgetAttributes」:

User.findById(1, { attributes: ['firstName', 'lastName'] }); 

私は味の何かをしたいと思います)、インスタンスの表示値に属するべき属性を指定したいと思います。

ドキュメントからこれを行った方法が見つかりませんでした(ドキュメントの検索を行う)。

モデルにinstanceMethodを定義しない限り、これはすべて可能ですか?

EDIT

また、私はちょうど手動で結果をフィルタリングすることができることをよく認識してんだけど、これはこれを行うための理想的な方法のように見えるしていません。

答えて

0

解決策の1つとして、instanceMethodsにtoJSONメソッドを定義し、返されるフィールドのリストを指定することができます。

instanceMethods: { 
    toJSON() { 
     return { 
      firstName: this.firstName, 
      lastName: this.lastName 
     }; 
    } 
} 

異なるフレームワークでは、Sequelizeインスタンスを出力するときにtoJSONがデフォルトで使用されます。 インスタンスを単純なオブジェクトに変換する結果を表示する前に、アプリケーションでのみ動作します。

関連する問題