Карта становится пустой после отправки через экспресс-параметры - PullRequest
0 голосов
/ 18 мая 2019

Я использую Express и Discord.js.

website.js

const express = require("express");
const app = express();
//...
ap.get("/testpage/:guildID", checkAuth, (req, res) => {
  const guild = client.guilds.get(req.params.guildID); //get the guild object which holds further object maps
  //console.log(guild) output is expected with this console log
  //I made the guildRoles since I thought maybe I had to send the roles map instead of the guild object, but it does not work either
  const guildRoles = guild.roles;
  //console.log(guildRoles) has expected output
  renderTemplate(res, req, "configure.ejs", {guild, guildRoles});
};

configure.ejs

//...
<script>
  //...
  function testFunction() {
    let guildRolesVar = <%- guildRoles %>;
    console.log(guildRolesVar);
    //this outputs an empty object, {}, when it should return {...} ... with data in it
    //same with <%- guild %>, however, it does return data, however, object maps are empty (same as above), but things that are not maps 
  };
</script>

Я ожидал, что данные карты объектов пройдут, но это не так, и я понятия не имею, почему. Структура guild:

Guild {
  roles:
    Collection [Map] {
      '1111111111111110' => Role {
        guild: [Circular],
        id: '1111111111111110',
        name: '@testRole' },
      '1837219387129378' => Role {
        guild: [Circular],
        id: '1837219387129378',
        name: '@anotherRole' } },
  name: 'the guild name',
  id: '12103981203980',
}

Как видите, у объекта гильдии есть дополнительные карты объектов. Когда в моем app.get(...) console.log объект гильдии, он выводит полные данные, ничего не пропуская. Однако, когда я передаю объект, объект ролей становится пустым ({}).

Почему это происходит и как я могу получить полные данные?

1 Ответ

0 голосов
/ 19 мая 2019

Скорее всего, это происходит из-за того, что express будет JSON stringify () для них, а также потому, что объекты discord.js имеют циклические ссылки, которые будут {}.Возможное решение - использовать d.js master / v12, что позволяет JSON.stringify () для его объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...