У меня есть этот метод GET, он извлекает ресурс Post, содержащий информацию о записи.
[HttpGet("{id}")]
public async Task<PostResource> GetOneAsync(int id)
{
var post = await _postService.GetSingleAsync(id);
var resource = _mapper.Map<Post, PostResource>(post);
return resource;
}
Это то, что вы получаете, когда запрашиваете GET '/ api / posts / id', он включает пользователя ресурс, который создал сообщение.
{
"id": 103,
"title": "¿Te sueles despetar por la noche?",
"description": "",
"pay": 1.77,
"pubDate": "2020-02-27 03:05:10-05",
"user": {
"id": 100,
"name": "Piter",
"surname": "Cueva",
"dni": "19482984",
"birth": "18/8/1888",
"email": "pitercueva@gmail.com",
"password": "clavesegura"
}
}
У меня есть этот метод PUT. После того, как я вставил новую публикацию, я хочу вернуть обновленный ресурс публикации с ответом о состоянии [200 OK]. Я использую тот же самый logi c в предыдущем запросе (получить по идентификатору).
[HttpPut("{id}")]
public async Task<IActionResult> PutAsync(int id, SavePostResource resource)
{
var post = _mapper.Map<SavePostResource, Post>(resource);
var result = await _postService.UpdateAsync(id, post);
if (!result.Success)
{
return BadRequest(result.Message);
}
var resultUpdated = await _postService.GetSingleAsync(id);
var postUpdated = _mapper.Map<Post, PostResource>(resultUpdated );
return Ok(postUpdated);
}
Я ожидаю тот же JSON ответ, который я получил ранее. Однако я получаю это пустое поле для пользователя в ответе о состоянии [200 OK]:
{
"id": 103,
"title": "¿Te sueles despetar por la noche?",
"description": "",
"pay": 1.77,
"pubDate": "2020-02-27 03:05:10-05",
"user": null
}
Сообщение ДЕЙСТВИТЕЛЬНО сохраняется, потому что когда я позже вызываю GET '/ api / posts / id', новое сообщение появляется там с его User в порядке, без нулей, но я также хочу показать пользователю в ответе состояния [200 OK], когда я выполняю запрос PUT.
Я предполагаю, что это что-то для выполнения ключевого слова await и возврата старого ресурса до того, как новый ресурс достигнет базы данных. Как мне подойти к этой проблеме? Как я могу убедиться, что:
await _postService.UpdateAsyn c (id, post);
происходит до:
ожидание _postService.GetSingleAsyn c (идентификатор);