コード例 #1
0
        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));
            }
        }