Javascript 猫鼬罐头;无法访问对象属性?

Javascript 猫鼬罐头;无法访问对象属性?,javascript,node.js,mongodb,mongoose,ecmascript-6,Javascript,Node.js,Mongodb,Mongoose,Ecmascript 6,我正在尝试访问返回的MongoDB(mongoose)查找的属性 如果我尝试对整个对象进行控制台日志记录,我可以看到所有内容。但是如果我尝试记录一个属性,我会得到未定义的。目标就在那里 function getAll () { let d = q.defer(); User.find({}, function (err, docs) { if (err) { d.reject(err); } for(le

我正在尝试访问返回的MongoDB(mongoose)查找的属性

如果我尝试对整个对象进行控制台日志记录,我可以看到所有内容。但是如果我尝试记录一个属性,我会得到未定义的
。目标就在那里

function getAll () {
    let d = q.defer();

    User.find({}, function (err, docs) {
        if (err) {
            d.reject(err);
        }

        for(let user of docs) {
            console.log(user); // This works!
            console.log(user.email); // This returns undefined!
        }

        d.resolve();
    });

    return d.promise;
}
有什么想法吗? 我还尝试使用JSON.parse,以防它被字符串化(只是为了确保),但事实并非如此

更新

看来我可以使用
user.\u doc.email
访问结果。
但这是什么原因呢?我不记得以前必须这样做。

如果在您
console.log
整个文档时,文档中的某个字段出现,但在您直接访问该字段时却没有出现,则表示该字段在模型的架构定义中丢失


因此,将
email
添加到
User

的模式中,您的控制台中到底显示了什么?@RyanO'Hara'undefined'。记录整个用户对象会按照预期打印对象,打印对象的所有属性和值。您还可以提供包含1个数据样本的最小插入脚本吗?“for(user in docs)”;我不能“of”activatedgeek,但我确信这是无关的。因为接收响应的客户端(angularjs)能够访问属性。无论如何,我会加上它。作为一个相对的新手,我觉得这个答案很难理解。那么,更明确地说,如何将字段添加到模型的模式中?具体地说,我使用asn1.js解析证书,在遍历树时,我在尝试访问
valueBlock
元素的
blockName
字段时使用了这个truoble。它将在我使用JSON.stringify输出整个树时显示,但在我访问valueBlock的blockName属性时不会显示node@CodeJockey这是特定于MongooseJS库()中模式的问答。你在用猫鼬吗?