Поместите метод, не обновляющий MongoDB в Angular7 с NodeJS на бэкэнд - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть это приложение Angular7 с NodeJS и MongoDB на сервере.Я проверил мой метод пут с Postman, и он отлично работает.Ошибка заключается в моем компоненте службы Angular или, возможно, модуле компонента, который использует службу.В консоли не отображаются сообщения об ошибках.Я выделил это на это - все данные поступают в сервис, поэтому происходит разбивка между компонентом сервиса и 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, который отлично работает с почтальоном:

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> 

Есть идеи, что я не так?Заранее спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я справился с проблемой.Поскольку при этом не было сообщений об ошибках, выяснить это было сложнее.Чего мне не хватало, так это моего метода обслуживания:

return this._http.put(url, {"savings": data}, httpOptions).subscribe(data => 
{console.log("PUT request successful ", data)})

Вместо просто data вы используете {"savings": data}.

0 голосов
/ 25 февраля 2019

Вы должны передать текущий _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))
    }) 
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...