#angular #typescript
#angular #typescript
Вопрос:
Я написал метод put с помощью Express следующим образом, но я получаю ошибку при отправке в разделе angular. Я знаю, что получаю сообщение об ошибке, потому что я не отправляю его как объект, но я не знаю, как отправить его как объект. Не могли бы вы помочь?
controller.js (серверная часть)
Word.updateStatus = (wordId,status,result) => {
sql.query('update wordstable set status = ? where id = ?',[status,wordId],(err,res)=> {
if(err) {
console.log('error : ',err);
result(null,err);
return;
}
if(res.affectedRows == 0 ) {
result({kind:'not_found'},null);
return;
}
result(null, res);
})
}
service.ts
setStatus(statusId:number, statusValue:number ) {
return this.httpService.put(`${this.url}/status/${statusId}`,statusValue);
}
component.ts
this.wordsService.setStatus(getWord.id,1);
Когда я тестировал его с Postman, он успешно выполнялся.
http://localhost:3000/words/status/2
{ «статус» : 1 }
Комментарии:
1. Как выглядит тело вашего запроса Postman? Как вы указываете, похоже, что вы очень близки, но, возможно, просто нужно «обернуть» ваш
statusValue
в какой-то объект.
Ответ №1:
Попробуйте так
setStatus(statusId:number, statusValue:number ) {
const params = new HttpParams().set('status', statusValue)
return this.httpService.put(`${this.url}/status/${statusId}`,{parmas});
}
Надеюсь, полезно
Комментарии:
1. Уточните «это не сработало». Что произошло? Что было отправлено? Была ли ошибка? Если да, то какая это была ошибка?
2. Он корректно работает с HttpParams, но когда дело доходит до возврата, статус не меняется.
3. @MichaelScott Так что это работает, я думаю, что ваш api не обновляет статус, поэтому вы не получаете изменений взамен
Ответ №2:
Ну, если ваша цель — отправить JSON такой формы
{ "status" : 1 }
тогда вам нужен PUT
объект, а не примитив. Поэтому
setStatus(statusId:number, status: number) {
return this.httpService.put(`${this.url}/status/${statusId}`, { status });
}
Комментарии:
1. Большое вам спасибо за ваш ответ, но это не сработало.
Ответ №3:
Я столкнулся с таким результатом, когда попытался;
setStatus(statusId:number, statusValue) {
const params = new HttpParams().set('status',statusValue)
console.log(params.get('status')) // incoming value: 1 this is correct
console.log(`${this.url}/status/${statusId}`,params) // http://localhost:3000/words/status/1
return this.httpService.put(`${this.url}/status/${statusId}`,params); // still status 0
}