无法打印ObjectID结构

时间:2014-02-24 16:58:37

标签: node.js

我在nodejs中这样做:

var bson = require("bson");
var util = require("util");
var obj = new bson.ObjectID();
console.log( util.inspect( obj, {showHidden:true, depth:5 } ) );

它应该打印ObjectID对象的结构,我希望在控制台中看到函数和属性,但我看到的只是一个像hexbtring 530b7870164068e4b9fd353c。

对此有何帮助?

1 个答案:

答案 0 :(得分:0)

util.inspect将在定义一个对象的自定义inspect()函数时调用它,这是ObjectID类型的情况。查看bson模块的/lib/bson/objectid.js中的第137行:

/**
* Converts to a string representation of this Id.
*
* @return {String} return the 24 byte hex string representation.
* @api private
*/
ObjectID.prototype.inspect = ObjectID.prototype.toString;

如果没有设置此自定义检查器,您可能会看到所需数据类型的打印件。一个简单的测试可以确认:注释掉这一行在ObjectID原型上设置ObjectID的自定义检查器,上面的示例代码现在生成如下内容:

{ _bsontype: 'ObjectID',
id: 'S\u000b~öxÿOkü6ü',
binId: <Buffer 53 0b 7e 99 f6 78 ff 4f 6b fc 36 fc> }

干杯。