Я должен выполнить CRUD из данных в MongoDB и использовать их с помощью веб-API.Я сделал операции получения и отправки.Но когда я пытаюсь обновить значение, возникает ошибка.
Я получаю идентификатор только через объект и не могу получить все значения из базы данных.Я попробовал почти весь код из сети, но большинство из них не работают.Я написал данные для использования API (не знаю, есть ли в этом ошибка).Так как функция обновления не работает, я не могу проверить работу программы.
Я думаю, что когда действие редактирования работает, только идентификатор передается. Никакое другое значение не передается.Я думаю, что это проблема (не уверен.)Я новичок в MongoDB и веб-API.Я пробовал другие коды в стеке над потоком, но он не работает.Мне нужна помощь, пожалуйста, помогите
Редактировать действие (из контроллера)
Public Function Edit(ByVal contact As Contact) As Contact
Dim contactsList = mongoDatabase.GetCollection("contact")
'Dim getValue = contactsList.Find({})
'Dim contactsList = mongoDatabase.find
Dim result As WriteConcernResult
Dim hasError As Boolean = False
Dim query As IMongoQuery = Builders.Query.EQ("_id", contact.Id)
Dim update As IMongoUpdate = Builders.Update.[Set]("Name", contact.Name).[Set]("Address", contact.Address).[Set]("Phone", contact.Phone).[Set]("Email", contact.Email)
result = contactsList.Update(query, update)
hasError = result.HasLastErrorMessage
If Not hasError Then
Return contact
Else
Throw New HttpResponseException(HttpStatusCode.InternalServerError)
End If
End Function
Обновить действие
Public Function update(ByVal Mongodb As MongoDatabase, ByVal mydocument As Object, ByVal contact As Contact) As Contact
Dim updateemployee As BsonElement = New BsonElement("_id", contact.Id)
Dim updateemployeedoc As BsonDocument = New BsonDocument()
updateemployeedoc.Add(updateemployee)
updateemployeedoc.Add(New BsonElement("_id", contact.Id))
Dim findemployeeDoc As BsonDocument = New BsonDocument(New BsonElement("_id", contact.Id))
Dim updateDoc = mydocument.FindOneAndReplace(findemployeeDoc, updateemployeedoc)
Console.WriteLine(updateDoc)
End Function
Удалить действие
Public Function delete(ByVal Mongodb As MongoDatabase, ByVal mydocument As Object, ByVal contact As Contact) As Contact
Dim findAnotheremployee As BsonDocument = New BsonDocument(New BsonElement("_id", "5caf3b2bc4940b6a4b48e3df"))
Dim docs = mydocument.FindOneAndDelete(findAnotheremployee)
Return docs
End Function
Использование API
РЕДАКТИРОВАТЬ
public ActionResult Edit()
{
return View();
}
[HttpGet]
public ActionResult Edit(Contact contact)
{
IEnumerable<Contact> contacts = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:52449/api/mongodb/update");
var responseTask = client.GetAsync("contact");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
return View("Edit",contact.Id);
}
else
{
ModelState.AddModelError(string.Empty, "Server Error. Please contact administrator.");
}
}
return View(contacts);
}
Удалить
[HttpGet]
public ActionResult Delete(Contact contact)
{
IEnumerable<Contact> contacts = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:52449/api/mongodb/delete");
var postTask = client.PostAsJsonAsync<Contact>("contact", contact);
postTask.Wait();
var result = postTask.Result;
if (result.IsSuccessStatusCode)
{
return View("Edit", contact.Id);
}
else
{
ModelState.AddModelError(string.Empty, "Server Error. Please contact administrator.");
}
}
return View(contact);
}