我有运行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
答案 0 :(得分: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]);
});
答案 1 :(得分:0)
为什么我不能执行以下操作并从我的对象中获取值?
因为在您的代码中,您尝试通过result[record]
访问值,而记录不是值的关键,仅值。
只需打印record
即可
result.forEach(function(record){
console.log("The value of record: ", record );
console.log("name is: ", record.name );
});