我正在寻找一种从此Collection中获取数据的方法。
数据如下:
'0000000' => GuildMember {
guild:
Guild {
members: [Object],
id: '000000',
name: 'Zombie',
_rawVoiceStates: [Object] },
user:
User {
id: '0000000',
username: 'Orc',
_roles: [ '0000' ],
nickname: 'Orc',
joinedTimestamp: 00000,
lastMessageID: null },
'0000000' => GuildMember {
guild:
Guild {
members: [Object],
id: '000000',
name: 'Zombie',
_rawVoiceStates: [Object] },
user:
User {
id: '0000001',
username: 'Orc1',
_roles: [ '0000' ],
nickname: 'Orc',
joinedTimestamp: 00000,
lastMessageID: null },
_array: null,
_keyArray: null }
我目前的循环是:
var user;
for(var u in test.members){
user = test.members[u];
console.log("["+u+"] "+user.username);
}
它目前正在推回TypeError: Cannot read property 'user' of null
我最初认为这个数据是一个数组,但它不是根据Discord.js文档,但我仍然不确定如何从集合中提取用户名数据。
任何帮助都会有所帮助。
答案 0 :(得分:5)
现在我查看了discord.js API,我认为你得到的东西是这样的(假设测试是你的公会对象):
test.members.forEach(function(guildMember, guildMemberId) {
console.log(guildMemberId, guildMember.user.username);
})
如果这不起作用,请尝试以下方式:
var membersArray = test.members.array();
for(var guildMemberId in membersArray) {
console.log(guildMemberId, membersArray[guildMemberId].user.username);
}
答案 1 :(得分:1)
TypeError:无法读取属性' user'为null
表示您的user
变量为空,表示test.members[u]
为空。
请先尝试记录test.members
并查看其是否已填充。
user.user.username
可能是错的。看起来应该只是user.username