2016-12-15 41 views
0

我運行一個查詢(比如說,對於一個用戶表,以及所有對應的用戶電話條目,其userId作爲外鍵,這樣用戶有很多電話)。打印一個sequalize對象(帶有子依賴對象)

我想打印結果到控制檯。

JSON.stringify只能打印的用戶,而不是用戶的手機,雖然他們在sequelize響應對象存在

如果我改用util.inspect我得到的一切,但也有很大的噪音,如$options和續集對象的許多其他屬性。

我不打算改變我的查詢{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)));