2016-12-15 8 views
0

私はクエリを実行します(Userテーブルとそれに対応するUserPhoneエントリのすべてで、userIdを外部キーとして持っているので、ユーザが電話をたくさん持っています)。(サブ従属オブジェクトを含む)

結果をコンソールに出力したいと思います。

JSON.stringify

はユーザーのみを印刷するように動作しますが、彼らはsequelizeレスポンスオブジェクト内に存在するがないユーザの電話機は、

私が代わりに$optionsような、私はすべてを取得util.inspect、だけでなく、多くのノイズを、使用している場合と、 sequelizeオブジェクトの他の多くのプロパティ

質問を{raw: true}と変更して検索するのではなく、結果を印刷します。

答えて

0

私は完全なSequelizeインスタンスを利用する必要があるが、instance.dataValuesだけを返したいので、必要に応じて再帰的にキーを反復処理して生の値に変換します。私は実際に次のコードを実行していないので、いくつかのエラーが含まれている可能性があります。

const extend = require('util')._extend; 

function getDataValues(obj) { 
    // create a copy of the dataValues 
    const compact = extend({}, (obj && obj.dataValues) || obj); 
    // loop over the keys 
    Object.keys(compact).forEach(key => { 
    const field = compact[key]; 
    // it's an Array of Models 
    if (field instanceof Array) { 
     compact[key] = field.map(include => 
     getDataValues(include) 
    ); 
    } 
    // it's a single Model 
    if (field.dataValues) { 
     compact[key] = extend({}, field.dataValues); 
    } 
    // otherwise it was a "string" or "int" or other simple value 
    }); 
    // resolve the compacted dataValues 
    return Promise.resolve(compact); 
} 

Model.findById(id, { 
    include: [{ 
    model: Model2, 
    as: "model_twos" 
    }], 
}) 
.then(model => getDataValues(model)) 
.then(compact => console.log(util.inspect(compact))); 
関連する問題