Как исправить запрос пут из учебника по CRUD-приложению Heroku MEAN stack - PullRequest
0 голосов
/ 02 февраля 2019

Я следовал этому руководству от Heroku для развертывания CRUD-приложения MEAN-стека.Создать, Удалить и Получить всю работу.Единственная ошибка, которую я получаю сейчас, от Пут.Я получаю ошибку 500 при попытке обновить объект и не знаю почему.Мой код ниже.

//HTML
<div *ngIf="contact" class="row">
...
<button class="btn btn-info" *ngIf="contact._id" (click)="updateContact(contact)">Update</button>

//.ts file
updateContact = (contact: Contact) => {
  var idx = this.getIndexOfContact(contact._id);
  if (idx !== -1) {
   this.contacts[idx] = contact;
   this.selectContact(contact);
  }
  return this.contacts;
}

private getIndexOfContact = (contactId: String) => {
  return this.contacts.findIndex((contact) => {
    return contact._id === contactId;
  });
}

//server.js file
app.put("/api/contacts/:id", function(req, res) {
   var updateDoc = req.body;
   delete updateDoc._id;
   db.collection(CONTACTS_COLLECTION).updateOne({_id: new ObjectID(req.params.id)}, updateDoc, function(err, doc) {
   if (err) {
     handleError(res, err.message, "Failed to update contact");
   } else {
     updateDoc._id = req.params.id;
     res.status(200).json(updateDoc);
   }
  });
});

Моя консоль сообщает мне, что на updateContact contact = undefined.Однако это определенно потому, что я могу консоль войти в мои запросы на удаление и получение.Я также получаю 500 ошибок позже.Их пример сайта также не разрешает обновления.Похоже, они тоже получают ошибку 500.

Ответы [ 2 ]

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

Исправлена ​​заявка здесь.Необходимо отправить правильные параметры в метод updateOne () и использовать $ set

app.put("/api/contacts/:id", function(req, res) {
  var updateDoc = req.body;
  delete updateDoc._id;
  var newValues = { $set: updateDoc};

 db.collection(CONTACTS_COLLECTION).updateOne({_id: new 
 ObjectID(req.params.id)}, newValues, function(err, doc) {
 if (err) {
   handleError(res, err.message, "Failed to update contact");
  } else {
   updateDoc._id = req.params.id;
   res.status(200).json(updateDoc);
  }
 });
});
0 голосов
/ 02 февраля 2019

Какой updateContact не определено?Вы пытались записать его в начале каждого из этих методов?Можем ли мы увидеть ваш ContactDetailComponent?Как только вы найдете решение, пожалуйста, опубликуйте ответ, чтобы он помог будущим дознавателям.

Редактировать: Имеется в виду комментарий, ошибочная кнопка.Пожалуйста, игнорируйте.

...