Я пытаюсь изменить «OriginalUrl», который уже создан и сохранен в базе данных под случайным ObjectId, следующим образом:
{
"_id" : ObjectId("5b1551d571231d26444d5c35"),
"Title" : "Test5",
"Code" : "n3b4nb_jxnm2",
"OriginalUrl" : "https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api-mac?view=aspnetcore-2.1",
"Url" : null
}
У меня работает метод Post Get and Delete, но мой Putметод не делает то, что я понимаю, как способ сделать это в соответствии с https://docs.microsoft.com/
[HttpPut("{id}")]
public async Task<IActionResult> Update(string id, [FromBody] string su)
{
var gameFromDb = await _repo.GetAsync(id);
if (gameFromDb == null)
{
return new NotFoundResult();
}
su = gameFromDb;
// await _repo.Update(su);
return new OkObjectResult(su);
}
Я все еще учусь, поэтому я искренне извиняюсь, если это очевидный ответ, который я еще не обнаружил в этомсайт или где-либо еще.
Обновление:
[HttpPut("{id}")]
public async Task<IActionResult> Update(string id, [FromBody] string su)
{
return (await _repo.Update(ObjectId.Parse(id)))
? (IActionResult)Ok("Updated Successfully")
: NotFound();
}
}
}
Репозиторий:
public async Task<bool> Update(ObjectId id)
{
var filter = new ShortUrl("_id", 10);
var replacement = new BsonDocument { { "_id", 10 }, { "x", 2 } };
var r = _db.Urls.ReplaceOne(filter, replacement);
return r.IsAcknowledged
}
Обновление:
Я понимаю, что есть похожие статьи, такие как:
https://stackoverflow.com/questions/41493327
И:
https://stackoverflow.com/questions/41483648
Но ни одна из них не помогла.Я не хочу жестко кодировать «Имя», «Джон» в «Имя», «Джек».Мне нужно иметь возможность искать идентификатор, связанный с «Джоном», и менять имя на то, что когда-либо пропускает пользователь.Я думал примерно так:
public async Task<bool> Update(ObjectId id)
{
var filter = Builders<ShortUrl>.Filter.Eq(x => x.Id, id);
var r = await _db.UrlsFindOneAndUpdate(filter, update);
return r.IsAcknowledged;
}
, но, очевидно, это неправильно.Любая обратная связь будет принята с благодарностью.