【发布时间】:2020-11-16 13:38:45
【问题描述】:
我是 MEAN 堆栈的新手,在使用 put 方法更新数据时遇到问题,我已经使用邮递员进行了测试,它工作正常,但是当我在 Angular 上使用它时它不起作用。没有出现任何错误,这是我在更新数据后在控制台中得到的 [提供成功更新][1] 但我更新的数据没有任何变化。我对创建和删除方法没有问题,只是更新有问题的方法
这是我的代码
更新服务
updateData(id, data): Observable<any>{
let url = `${this.baseUri}/update/${id}`;
return this.http.put(url,data, { headers : this.headers }).pipe(
catchError(this.errorManagement)
)}
更新组件
OnSubmit(id){
let record = this.updateForm.value
if(!record){
this.notif.showError('can\'t do update data','Update data Error')
return false;
}else{
return this.motorService.updateData(id, record).subscribe(res=>{
console.log(record)
},(error) => {
console.log(error)
});
}}}
更新路线
listDataRoute.route('/update/:id').put((req,res,next)=>{
listData.findByIdAndUpdate(req.params.id,{
$set : req.body
},{new: true, useFindAndModify: false},(error, data)=>{
if (data.n > 0) {
res.status(200).json({
message: 'profile updated'
});
} else {
res.status(401).json({
message: 'not authorized'
});
}
})
.catch(error => {
res.status(500).json({
message: 'updating profile failed'
});
})
})
知道我做错了什么吗?我已经被这个错误困住了 5 个小时,谢谢 [1]:https://i.stack.imgur.com/ryR8g.png
更新:在“更新路由”中添加一些代码后出现错误 401,仍然不知道如何解决此错误
【问题讨论】:
-
您是否比较过您是否缺少要更新的对象的任何属性。当我遇到与您相同的问题时,我的后端控制器功能中缺少一些属性
-
感谢您的评论,您能解释一下缺少哪些属性吗?我很困惑@Fiehra
-
我正在发送一个更新,例如我更新了我的年龄。但我的后端控制器没有处理年龄属性。所以这就是更新成功但我的年龄从未改变的原因。我发布了我如何处理更新调用的代码希望它有所帮助:)
标签: node.js angular mongodb typescript mean-stack