首页 > 解决方案 > Express/Node.js 后端点显示 [object Object] 而不是 Array of Objects

问题描述

我在前端使用 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 Object]”中获取结果数组?我在 Express 中启用了以下设置:

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

标签: node.jsangularexpresshttp

解决方案


我的声誉较低,所以我无法发表评论,您尝试过 results[1]['name']; ?


推荐阅读