![](/img/trans.png)
[英]How to send and get JSON data from Node.js into HTML using 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
/ const
和var
時保持一致。
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.