循环雪花阵列

时间:2017-04-05 13:44:19

标签: javascript node.js discord discord.js

我正在寻找一种从此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文档,但我仍然不确定如何从集合中提取用户名数据。

任何帮助都会有所帮助。

2 个答案:

答案 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