Console.log 打印 [Object SequelizeInstance:User]

Asg*_*ani 0 node.js sequelize.js

所以,我对续集有点陌生。以前(我不知道可能是旧版本还是其他一些代码)console.log会打印整个对象及其所有元数据属性,但现在它打印[object SequelizeInstance:users].

我曾尝试使用raw:true返回 [object Object]的属性(以逃避元数据地狱),然后用util.inspect它包装它以打印它。

代码:

User.findOne({
        attributes : [
            [sequelize.fn('max', sequelize.col('id')), 'id']
        ],
        raw: true //if enabled
    })
    .then(function(user){
    //returns [object SequelizeInstance:users] or if raw:true then [object Object]
        console.log("User object is "+user);
    //both are printed easily with this
        console.log(util.inspect(user,false,null));
    //OR
        console.log(JSON.stringify(user, null, 4))
    })
Run Code Online (Sandbox Code Playgroud)

这是记录用户对象的唯一方法还是我错过了什么,因为以前我只能console.log(user)获取所有数据(元数据地狱)?

Viv*_*shi 5

第一个 Diff b/w ( raw : true ) AND ( raw : false or nothing )

// When raw : true --> Will return plain json object nothing added from sequlize 
console.log("User object is "+user);

// When raw : false --> Will return sequlize object , so that you can perform verious opreation upon them
console.log("User object is "+user);
user.update({ name : 'New Name' }) // <-- Like this , you dont need to define where , coz its already object that is returned by sequlize
Run Code Online (Sandbox Code Playgroud)

你得到 [Object Object] 和 [object SequelizeInstance:users] 的原因是:

console.log("User object is "+user); // Will show [Object Object] cos you are appending object with string
console.log("User object is " , user); // This will print out whole object clearly  
Run Code Online (Sandbox Code Playgroud)