【发布时间】:2018-09-07 09:16:54
【问题描述】:
我有 2 个表:用户和材料具有 m:m 关系。交集实体是 journalMaterials。我正在尝试发送一个 POST 请求以插入 journalMaterials。此外,该表有 2 个属性:recycledQuantity 和 recycleDate。我尝试了一些东西,但如果我使用不存在的 materialId 插入它不会给我“未找到”。
app.post('/users/:uid/materials/:mid', (req, res, next) => {
User.findById(req.params.uid)
.then((user) => {
if (user){
let journalMaterial = req.body
journalMaterial.userId = user.id
Material.findById(req.params.mid)
.then((material) => {
if (material){
journalMaterial.materialId = material.id
return JournalMaterial.create(journalMaterial)
}
else{
res.status(404).send('not found')
}
})}
else{
res.status(404).send('not found')
}
})
.then(() => {
if (!res.headers){
res.status(201).json('created')
}
})
.catch((err) => next(err))
})
【问题讨论】:
-
"如果我插入一个不存在的 materialId,它不会给我'未找到'" - 是的,这正是你在这里的代码将做的.
-
问题是,如果它在数据库中查找 id 为 2 的材料,例如,它没有找到,它应该进入 else 分支,给出未找到并退出,但我没有不明白他为什么不那样做……
-
我看错了,我以为你说你正在收到
not found- 那么会发生什么? -
为了更清楚,我插入了一个 userId=1 的用户和一个 materialId=1 的材料,所以我没有更多的用户或材料,所以如果我用 userId 发送我的 POST 方法=1 和 materialId=2 我应该得到“未找到”,因为我没有 materialId=2 的材料,而是我得到“创建”并且服务器给出错误:“未处理的拒绝错误:无法设置发送后的标头。”
标签: node.js rest express post sequelize.js