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,您可以将其链接起来,如果成功则发送响应。您从数据库中提取模型并更新参与者数组,但随后您需要将其存储在数据库中并向客户端发送响应。
希望我的措辞正确。让我解释一下。
我正在创建一个应用程序,用户可以在其中组织游戏锦标赛(单独)。
我正在使用 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,您可以将其链接起来,如果成功则发送响应。您从数据库中提取模型并更新参与者数组,但随后您需要将其存储在数据库中并向客户端发送响应。