簡體   English   中英

遍歷貓鼬findById

[英]Iterate through Mongoose findById

我有運行貓鼬並成功返回以下結果的代碼。

為什么我不能執行以下操作並從對象中獲取值?

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

假設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]);
}); 

為什么我不能執行以下操作並從對象中獲取值?

因為在您的代碼中,您嘗試通過執行result[record]來訪問值,而record不是值的關鍵, 而是only

只需打印record

    result.forEach(function(record){
        console.log("The value of record: ", record );
        console.log("name is: ", record.name );
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM