gpt4 book ai didi

node.js - Put 方法不在后端使用 NodeJS 更新 Angular7 中的 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 10:45:13 24 4
gpt4 key购买 nike

我有这个 Angular7 应用程序,后端使用 NodeJS 和 MongoDB。我已经用 Postman 测试了我的 put 方法,它工作得很好。错误出在我的 Angular 服务组件或可能是使用该服务的组件模块。控制台中未显示任何错误消息。我已将其隔离到这一点——所有数据都将其发送到服务,因此故障发生在服务组件和 Node api 之间。这是我的 service.ts 文件中的方法:

updateSavings(pin: string, data){
const url = `api/accounts/${pin}`;
console.log(data);
return this._http.put(url, data, httpOptions)
.pipe(catchError(this.handleError)
);
}

这是我的 Api.JS 方法,可以很好地与 Postman 配合使用:

router.put('/accounts/:pin', function(req, res, next) {
Accounts.findOneAndUpdate({pin: req.params.pin}, {savings:
req.body.savings}).then(function() {
//console.log(req.body.savings);
Accounts.findOne({pin:req.params.pin}).then(function(account){
//console.log(res.send(account))
})
})
})

这是我使用服务方法的组件方法:

depositSavings(data){
let y = this.accountsService.updateSavings(this.appComponent.rightPin,
data);
console.log(this.appComponent.rightPin);
return y;
}
}

这是我的模板,向您展示那里发生了什么:

<input 
type="text"
id="input"
[(ngModel)]="data"
[ngModelOptions]="{standalone: true}">
<br><br>
<button (click)="depositSavings(data)">Submit</button>

有什么想法我错了吗?提前谢谢大家。

最佳答案

你必须传递当前的 _id 作为第一个参数,然后传递整个对象进行更新

router.put('/accounts/:pin', function(req, res, next) {
Accounts.findOneAndUpdate(req.params._id, {pin: req.params.pin, savings:
req.body.savings}).then(function() {
//console.log(req.body.savings);
Accounts.findOne({pin:req.params.pin}).then(function(account){
//console.log(res.send(account))
})
})
})

关于node.js - Put 方法不在后端使用 NodeJS 更新 Angular7 中的 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54859602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com