Я смущен тем, как console.log отображает объекты ObjectId() из собственного драйвера MongoDB для NodeJS.console.log объектов BSON в NodeJS
Я распечатать adslot
документ из MongoDB с console.log:
db.collection('adslots').findOne({_id: adslotId}, (err, adslot)=>{
console.log(adslot);
}
и выход
adslot:
{ _id: 57ef0b9b26d1d77b606bf271,
name: 'cspop',
width: 1,
height: 1,
elemId: 'dummy',
active: true,
updated: 2016-10-01T01:04:27.597Z }
_id
выглядит как шестнадцатеричное число. Тем не менее, _id является ObjectId, потому что:
console.log("adslot:\n" + adslot._id.constructor.name);
дает
adslot:
ObjectID
Несмотря на adslot
того, конструктор ObjectId
вызова isValid()
(http://mongodb.github.io/node-mongodb нативный/2,2/апи/ObjectID.html # .isValid) на это дает ошибка:
console.log('adslot:');
console.log(adslot._id.isValid());
результаты:
adslot:
/home/vlad/arbsrv/node_modules/mongodb/lib/utils.js:98
process.nextTick(function() { throw err; });
^
TypeError: adslot._id.isValid is not a function
Итак, почему console.log()
печатает _id
как номер, а не как объект? toString()
как-то называется автоматически на _id
?
И почему, если _id
указанно для примера ObjectId
, isValid()
не определен на это?
Ok, isValid является статическим методом ObjectId и используется как ObjectId.isValid (adslot._id), который возвращает true. Остается вопрос о console.log. – rlib