簡體   English   中英

如何使用node js從對象中獲取所有數據

[英]How to get all data from objects using node js

所以我想顯示用戶在登錄時擁有的所有組。但我只得到 1 個值。 我還是使用節點 js 的新手

所以這里的代碼:

    var data = { id: user.id_panel_users, username: user.username, role: user.role, groups: user.groups }
    var [group] = await modelGroup.getUserGroup(data.id)

    for(let i=0;i<group.length;i++){
        data.groups = group[i].group_name;
    }


    console.log(group, data.groups)
    // data.toString();
    console.log("serialize user: ", data)
    done(null, data);

這里的結果:

[
  TextRow { group_name: 'add_url_premium' },
  TextRow { group_name: 'add_url_regular' }
] add_url_regular
serialize user:  {
  id: 77,
  username: '082122735123',
  role: 2,
  groups: 'add_url_regular'
}

我可以看到的主要問題是在for循環中:

for (let i = 0; i < group.length; i++) {
    data.groups = group[i].group_name;
}

每次,您都將組名分配給data.groups字段。 這會將類型從array更改為string ,並且每次都會覆蓋之前的值。

您應該改為使用Array.prototype.push function 將組添加到數組的末尾:

for (let i = 0; i < group.length; i++) {
    data.groups.push(group[i].group_name);
}

There is a cleaner way of doing this using the map function: it loops through an array and applies a function to each item, replacing that item in the array with the value that the function returned. 在您的情況下,您的代碼將變為:

let data = { id: user.id_panel_users, username: user.username, role: user.role, groups: user.groups }
let [group] = await modelGroup.getUserGroup(data.id);
data.groups = group.map(g => g.group_name);

我還建議您使用分號; 在所有語句的末尾,並且您嘗試在使用let / constvar時保持一致。

data.groups需要是一個array 您所做的不是將group_name附加到data.groups ,而是將字符串分配給它。 所以,而不是:

for(let i=0;i<group.length;i++){
    data.groups = group[i].group_name;
}

你應該使用:

for(let i=0;i<group.length;i++){
    data.groups.push(group[i].group_name);
}

此外, var是在 javascript 中聲明變量的舊方法。 如果您是新手,我建議您使用let/const

暫無
暫無

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

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