public async Task <JsonResult> PostAsync(TType type) { try { //verifica parâmetros que são de preenchimento obrigatório. if (type == null) { throw new Exception("Parâmetros inválidos!"); } //conectar no banco de dados. CouchClient couchClient = new CouchClient(connectionString); CouchDatabase couchDataBase = await couchClient.GetDatabaseAsync(dataBase); //Os campos _id e _rev são gerados automaticamente pelo CouchDB. Quando fazemos uma inserção, devemos remover estes campos do objeto a ser persistido. //Vale lembrar que estes mesmos dois campos são obrigatórios para alteração/exclusão de documentos. JObject jObject = JObject.FromObject(type); jObject.Remove("_id"); jObject.Remove("_rev"); //persiste o novo documento CouchResponse couchResponse = await couchDataBase.InsertAsync(jObject); //valida o status do retorno a consulta ao CouchDB if (couchResponse.StatusCode == HttpStatusCode.Created || couchResponse.StatusCode == HttpStatusCode.Accepted || couchResponse.StatusCode == HttpStatusCode.OK) { object chaveRetorno = new { _id = couchResponse.Id, _rev = couchResponse.Rev }; return(new JsonResult(chaveRetorno)); } else { //retorna o erro ocorrido durante a pesquisa do CouchDB return(new JsonResult(couchResponse.Content)); } } catch (Exception ex) { return(new JsonResult(ex.Message)); } }