Array.push()似乎仅在我的应用程序正在运行时才起作用

时间:2019-06-11 17:00:33

标签: node.js

我有一个可以在独立测试时正常运行的功能。但是,当运行我的完整应用程序时,好像array.push()不再起作用。

module.exports.getLocalTypes = async (server_id, user_id) => {
  let localTypes = [];
  const getServer = await this.getRobotServer(server_id);
  const { settings } = getServer;
  console.log("GET ROBOT SERVER STATUS: ", settings);
  settings.roles.map(role => {
    console.log("TEST 1 ", role.role);
    role.members.forEach(member => {
      console.log("TEST 2", member);
      if (user_id === member) return localTypes.push(role.role);
    });
  });
  console.log("BEOFRE NO DUPES: ", localTypes);
  localTypes = Array.from(new Set(localTypes));
  console.log("SENDING LOCAL TYPES: ", localTypes);
  return localTypes;
};

当我运行独立测试时,我得到了正确的结果:

TEST 1  default
TEST 2 @everyone
TEST 1  owner
TEST 2 user-810c7f96-47ad-4408-a8a2-3c9274fa2898
BEOFRE NO DUPES:  [ 'owner' ]
SENDING LOCAL TYPES:  [ 'owner' ]
Should return ['owner']:  [ 'owner' ]

当运行我的完整应用程序并对该函数使用完全相同的输入时,我得到的是以下结果:

[1] TEST 1  default
[1] TEST 2 @everyone
[1] TEST 1  owner
[1] TEST 2 user-810c7f96-47ad-4408-a8a2-3c9274fa2898
[1] BEOFRE NO DUPES:  []
[1] SENDING LOCAL TYPES:  []

该函数从数据库中正确提取值,并拉出正确的所有者和角色,但是似乎无法将此值添加到数组中。我尝试将整个内容包装在Promise中,或使用try / catch。没有什么不同的。

输出应该是添加了类型的数组,就像第一个测试结果一样。

我对JS还是很陌生,所以也许我缺少一些基本知识。 对于全文,整个仓库都在线: https://github.com/jillytot/remote-control

哦,最后一点要注意,在应用程序也运行的同时运行我的测试。测试仍然会产生正确的结果,但是实际的应用程序仍然会得到错误的结果。

1 个答案:

答案 0 :(得分:0)

我刚刚解决了它,它与这里没有任何关系。 在某些时候,我一定不小心更改了输入别名之一,因此用户以未定义的身份进入。 我错过了它,因为这是我早先确认过的工作,因此我在测试中忽略了它。