通过Mongoose findById迭代

问题描述 投票:0回答:2

我有运行mongoose的代码并成功返回以下结果。

为什么我不能执行以下操作并从我的对象中获取值?

Object.keys(result).forEach(function(record){
            console.log("The value of result[record]: ", result[record]);
        })

如何遍历此对象以获取不同的键以获取列表和对象中的值?

我正在使用普通的香草javascript。但我不介意一些较新的ES选项。

{ owner: { fullName: 'xxx', userName: 'xxx' },
  members: [ { userName: 'xxx', fullName: 'xxx', position: '' } ],
  admins: [ 'xxx','ashg' ],
  _id: 5a482302a469a068edc004e3,
  type: 'xxxx',
  name: 'xxxx xxxx',
  descrip: 'xxxx',
  startDate: '2018-01-01',
  endDate: ''
}

这是我想要复制的更简单的示例,它完全按预期工作:

var o={a:1,b:2,c:3};
var val;

Object.keys(o).forEach(function(key) {
    val = o[key];
    console.log(val);
});

Output: 1,2,3
javascript arrays object mongoose
2个回答
1
投票

假设result是一个Mongoose文档,你可以调用result.toObject()将它转换为一个普通的JS对象,这样你就可以有效地使用像Object.keys这样的方法。

var o = result.toObject();
Object.keys(o).forEach(function(key) {
    console.log(o[key]);
});

但是您也可以使用文档架构的eachPath方法来获取文档属性并以此方式迭代:

result.schema.eachPath((path, schemaType) => {
    console.log(result[path]);
}); 

0
投票

为什么我不能执行以下操作并从我的对象中获取值?

因为在你的代码中,你试图通过执行result[record]来访问值,而记录不是值的关键,它只是值。

只需打印record即可

    result.forEach(function(record){
        console.log("The value of record: ", record );
        console.log("name is: ", record.name );
    });
© www.soinside.com 2019 - 2024. All rights reserved.