Express / Node.js post конечная точка показывает [объект-объект] вместо массива объектов - PullRequest
0 голосов
/ 19 июня 2020

Я использую Angular на веб-интерфейсе и отправляю почтовый запрос на сервер, построенный с помощью Express.

Так выглядит код Angular:

  addEntry() {
    let type = "Random Type";
    let location = "Random Location";
    let date = new Date();
    let results = [
      { name: "my first name", age: 23 },
      { name: "new second name", age: 35 },
    ];

    return this.http.post<{ message: string }>(
      this._url + "/myendpoint/add",
      { type, location, date, results }
    );
  }

А вот как выглядит код express:

router.post(
  "/add",
  middleware.verifyToken,
  async function (req, res) {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(422).json(errors.array());
    }

    try {
      let userID = req.tokenData.userID;
      let user = await User.findOne({ _id: userID });
      if (user === null || user.length <= 0) {
        return res.status(422).json("Could not add entry");
      } else {
        let type = req.body.type;
        let location = req.body.location;
        let date = req.body.date;

        console.log(req.body);

        let results = req.body.results.map(async (el) => {
          let result = await Entry.findOne({ name: el.name });
          return {
            name: result.name,
            age: el.age,
          };
        });

        [some more code ...]

      }
    } catch (err) {
      console.log(err);
      return res.status(422).json(err);
    }
  }
);

Выводит журнал консоли :

{
  type: 'Random Type',
  centre: 'Random Location',
  date: '2020-06-19T16:50:25.357Z',
  results: '[object Object]'
}

И я также получаю эту ошибку, которая, вероятно, возникает из-за того, что результаты отображаются как '[object Object]';

TypeError: req.body.results.map is not a function

Как мне получить массив результатов в Express вместо '[объект Object]'? У меня в Express включены следующие настройки:

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

In Angular: results: encodeURIComponent (JSON .stringify (results));

In Express: JSON .parse (decodeURIComponent (req.body.results));

0 голосов
/ 19 июня 2020

У меня меньше репутации, поэтому я не могу оставить комментарий, вы пробовали результаты [1] ['name']; ?

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