【问题标题】:Why object values are different in console.log() and in debugger?为什么console.log() 和调试器中的对象值不同?
【发布时间】:2018-01-06 11:25:15
【问题描述】:

那么为什么调试器中对象的变量不同

和控制台日志?我特别询问_id 看起来非常不同的变量!

在调试器中,我找不到这部分:"597e874b52fba6324c9ac192"!

[ { _id: 597e874b52fba6324c9ac192,
title: 'x',
author: 'z',
body: 'y',
date: 2017-07-31T01:26:35.533Z,
comments: [],
__v: 0 },
{ _id: 597e87660726ab322c303a8e,
title: 'x',
author: 'z',
body: 'y',
date: 2017-07-31T01:27:02.266Z,
comments: [],
__v: 0 },
{ _id: 597e8773c45264303c3fcf0b,
title: 'x',
...

这是我使用的节点JS代码:

function test() {

var mongoose = require('mongoose');
mongoose.connect("mongodb://localhost:27017/test");
var Schema = mongoose.Schema;

var blogSchema = new Schema({
    title: String,
    author: String,
    body: String,
    comments: [{body: String, date: Date}],
    date: {type: Date, default: Date.now},
    hidden: Boolean,
    meta: {
        votes: Number,
        favs: Number
    }
});

var Blog = mongoose.model('Blog', blogSchema);




    Blog.create({title: 'x', author: "z", body: "y"}, function (err, small) 
{
        if (err) return handleError(err);
        // saved!
    });
    var weirdResults;
    Blog.aggregate([
        {$match: {author: {$exists: true}}}
    ], function (err, results) {
        weirdResults = results;
        if (err) return next(err);
        console.log(weirdResults);
    });

}

test();

谢谢大家!

【问题讨论】:

  • 在您的调试器输出中始终显示_id: ObjectID。还有一个“扩展”的小箭头可以显示价值。就像任何 JavaScript 对象一样。 console.log() 基本上调用 .toString() 原型并“字符串化”对象内容。这就是为什么一个直接显示值而另一个要求您“扩展”对象以检查值的原因。
  • @Emilio 那么当您展开它时它会显示什么?但是,是的,mongo 对象 ID 是 pretty magical
  • 与远程调试器的作者一起讨论。它实际上是 ObjectId 的“猫鼬”表示,它也像任何实际的“猫鼬文档对象”(由 .find() 返回)而不是“普通 JavaScript 对象”(由 .aggregate() 返回)具有“各种奇怪而奇妙的内在特性”。这通常被 .toObject().toString() 的标准 JavaScript 原型所抵消。某人的工具如何实现这些是“他们的业务”。但我确实解释了 console.log() 的实际作用以及为什么不同。

标签: javascript node.js mongodb debugging


【解决方案1】:

你可以通过_id.toString();获取id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多