我运行一个查询(让我们说一个User表,以及它所有相应的UserPhone条目,它们有一个userId作为外键,这样用户就有很多手机)。
我想将结果打印到控制台。
JSON.stringify
仅用于打印用户,但不能打印用户手机,尽管它们存在于续集响应对象中
如果我改为使用util.inspect
,我会得到所有内容,但也会产生很多噪音,例如$options
和续集对象的许多其他属性。
我不打算用{raw: true}
更改我的查询,只是想打印结果。
答案 0 :(得分:0)
我有一个案例,我需要使用完整的Sequelize Instance但只想返回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)));