我在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 */
正确显示密钥
1条答案
按热度按时间uwopmtnx1#
经过大量测试
我发现了bug。
我以为把内容倾倒在屏幕上可以让我清楚地看到正在发生的事情。
将数据记录到控制台后,您会发现一些非常不同的东西。
对于那些努力遍历存储在AWS DynamoDB中的数据的人,请注意数据类型不是数组。它存储在一个集合中。使用
.values
访问实际值我不知道是否有人会有这个问题,因为它是如此的具体。如果有任何mods这样认为,继续删除帖子,或评论,我应该。