MERN Stack:ExpressJs 能否将添加数据从一个模型路由到另一个模型的数组属性?

MERN Stack: Can ExpressJs route add data from one Model to another Model's array attribute?

希望我的措辞正确。让我解释一下。

我正在创建一个应用程序,用户可以在其中组织游戏锦标赛(单独)。

我正在使用 MERN 堆栈和 Redux 创建这个应用程序。

我定义了许多路由,例如用于 CRUD 功能和用户身份验证。我当前的工作流程是创建后端路由,使用 Postman 对其进行测试,一旦成功,我将创建 Redux reducer/action.

我有两个数据模型。一种是用户,一种是锦标赛。 锦标赛模型有一堆字符串类型的属性,如'title',其中一个属性是'participants',它是数组类型。

我正在尝试向包含 User.username 的锦标赛/:id 写入一个 Post 请求,并将其 push() 到 Tournament.participants 数组中。

我尝试了很多东西,但我当前的代码看起来像

router.post('/:id', (req, res) => {
  Tournament.findById(req.params.id)
    .then(tournament => tournament.participants.push(req.body))
    .catch(err => res.json(err))
});

我迷路了,需要帮助。谢谢大家

我认为这可行:

router.post('/:id', (req, res) => {
  Tournament.findById(req.params.id)
    .then(tournament => {
      tournament.participants.push(req.body)
      // save the updated tournament to the DB and take advantage of Promise-chaining
      return tournament.save()
    })
    // send a response to the client
    .then(savedTournament => res.json(savedTournament))
    .catch(err => res.json(err))
});

您只需确保使用以下行将更新的锦标赛保存到数据库中:

return tournament.save()

然后,这将 return 一个 Promise,您可以将其链接起来,如果成功则发送响应。您从数据库中提取模型并更新参与者数组,但随后您需要将其存储在数据库中并向客户端发送响应。