javascript 在双节棍上绕着虫子奇怪地转圈

r3i60tvu  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(101)

我在nodejs中为一个多人贪吃蛇游戏构建了一个服务器。
我目前正致力于允许用户创建自己的机器人,为此,我必须有一种方法来生成和存储API密钥。
我已经想好了。这是一个来自AWS DynamoDB的漂亮屏幕截图,显示了数据的格式。

我们要关注的项是API_keys行。扩展后,它只是一个API键列表[<key>,<key>,etc]每个API键只是我用一个helper函数生成的一个字符串。

function generateAPIKey() {
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let apiKey = '';
  
    for (let i = 0; i < 32; i++) {
      const randomIndex = Math.floor(Math.random() * characters.length);
      apiKey += characters.charAt(randomIndex);
    }
  
    return apiKey;
  }

一切正常。然后我创建了一个登录和注册系统->这也很好!
当我试图为 Jmeter 板制作一个包含所有API键的表时,问题出现了。这是 Jmeter 板的外观。

这就是我如何管理这一个。

{% set api_keys =  ["45ZeHLkHLskSbRuBvLObUGZ3lfDSJTVZ","8DAefL5BtSwVOUAp0d1ZYrEEr0sliGBU","9XZLnqBwARSMEFv4O4PBtcxY4Lpob3x2","BKce7wVSnblYEfWv2pAXHlbyrCuPpxmn","BrCv6cHP6uFaohS11GnWIllvzB3VoX4K","CJlyot3evxeR6fgW98sTBblKmrzKaRYy","CsCvTrJrdscXqYoLHnoRBlLwpReNKEJT","IYaitmquR42MafZlpd6clsY9e8NMCcmL","LU06037xiU71ZZJcfgXCauvlTuGybM6N","MZU0aVmyCMcsc2qaVsk9OUXGBixy9zxQ","PapmjncSJYDcUtTaDuatgZwXyIwubiQ2","RH0GV1SqX1IUAL0Rx9MQrlaK3BrK61Mr","RJ3VkuYbp0Zxz2lwQdRGwyKmtpH1JyMY","RMUKYDi0lm0AmQIadaZRx3J6pNWlJ5k9","RvnLoV7vtgEBEhvsLDMVJKXFugcoXHoY","i9LtNKURTBV5R3JGZNnjWfhq0kJz8TgF","ju0ssxnrH3ZoBxhtKwtuFJuWpNAJzSo0","mWBWiIfdA6C3KRCMquGJC76u7WMTPPdE","nyhHKOqT2G2zX95I99MHXKzJLchYsqZb","o0seZ0nYXH021Cy5vTVtthaUqY9whwOp","x5Sj0pFYrK4CDoXAWIrZqhoCTUur3AXo"]  %}

这只是用随机生成的API密钥填充api_keys变量。
然后,我用以下行填充行

{% for uid in api_keys %}
<tr class = "table-row" id="row-{{ loop.index0 }}">
   <td><b>{{ loop.index0 }}</b></td>
   <td class = "uid">{{ uid }}</td>
   <td class = "manage">
      <button class = "btn btn-inline">Copy Key</button>
      <button class = "btn btn-danger btn-inline">Delete</button>
   </td>
</tr>
{% endfor %}

这个也行!
当我试图循环用户数据时,问题就出现了。如果我从{% for uid in api_keys %}切换到{% for uid in user.api_keys %},一切都会中断。
控制台中没有错误,服务器上也没有,但是行没有打印出来。我只得到一张空table。
我假设错误是user.API_keys是一个空数组,或者类似的东西。所以,我打印变量只是为了检查。

{{ user.api_keys | dump }}

正确记录所有内容!当我使用用户数据而不是模板数据时,循环就不起作用了。
供参考,here is the full code on github
如果有人有最模糊的想法,请帮助我在这里。一切看起来都是正确的,它只是不工作!

编辑

我做了更多的测试,我发现仅仅尝试从列表中记录1个元素(而不是使用dump)也不会返回任何结果。

{{ user.api_keys[0] }}

是空的,而

{{ api_keys[0 }} /* the pre filled template one */

正确显示密钥

uwopmtnx

uwopmtnx1#

经过大量测试

我发现了bug。
我以为把内容倾倒在屏幕上可以让我清楚地看到正在发生的事情。
将数据记录到控制台后,您会发现一些非常不同的东西。

对于那些努力遍历存储在AWS DynamoDB中的数据的人,请注意数据类型不是数组。它存储在一个集合中。使用.values访问实际值
我不知道是否有人会有这个问题,因为它是如此的具体。如果有任何mods这样认为,继续删除帖子,或评论,我应该。

相关问题