Share Button

As units MVCBr.MongoModel e MVCBr.FDMongoDB implementam acesso as coleções MongoDB diretamente em um componente TFDMemTable abrindo os dados e enviando as alterações de volta no servidor do MongoDB.

base
O acesso ao MongoDB implementado como um Model do MVC, faz acesso direto a biblioteca MongoWire e está pronto para Auth3 presente na versão mais recente do MongoDB.
Dado a facilidade de uso do MongoDB que não exige um “schema” para as tabelas é uma boa solução em ambiente que requeira compartilhamento de dados e flexibilidade na mudança de estrutura dos documentos, justificando esforço adicional para implementar soluções RAD que de velocidade ao “coder”.

elementar
Bancos NoSQL como MongoDB não são acessados com comandos tradicionais como no ambiente SQL. É uma nova fronteira em armazenamento de dados que evoluiu muito recentemente, ainda que há um movimento para retroceder para modelos Cliente/Servidor mais tradicional adicionado de boas experiências com aprendizagem NoSQL como é o caso de TimescaleDB que faz uma mescla de recursos do Postgres e novos recursos até então visto somente nos bancos NoSQL – Novos estudos pela frente.

componentes

MongoConnection
Provê conectividade com o MongoDB.


MongoDataset
Um Dataset para obter os dados do servidor. Onde: CollectionName representa a tabela (coleção) que armazena os documentos; KeyFields é uma lista de colunas (seprado por “;” que indica a “where” a ser submetido ao servidor quando faz um “update” ou “delete”;

Exemplo no Git

Veja o Mongo Tips do amigo Thulio Bittencourt

Share Button

Um dia vi um programador tentando usar um componente VCL comum do Delphi que não tinha um correspondente DB para ele. Olhando a ginástica necessária para o componente responder a movimentações do Dataset, então lembrei quando estava aprendendo Delphi a uns 20 anos. O mais sensato é criar um novo componente DB para o mesmo.

base
Um componente DB é um componente de uso geral que responde a eventos existentes no TDatasource. O TDatasource emite uma chamada para o evento – no lado do componente, ele trata o evento e atualiza a visualização para o usuário.

elementar meu caro
Para receber evento, um componente DB deve responder aos eventos emitidos pelo TDatasource e fazer o ligação com a coluna da tabela que ao qual esta associado. Assim sendo, o componente DB irá expor uma ligação para o TDatasource (Datasource) e outro para o coluna desejada (Field);

o exemplo
Sabe aquele componente encontrados nos celulares ON/OFF, que tal criar um componente VCL DB para ele. O componente que executa esta funcionalidade na VCL é o TToggleSwitch, então vamos torná-lo um “dataware”.

usando unit: MVCBr.DataControl
Para facilitar a criação dos diversos componentes DB existentes no MVCBr – é feito uso do componente TMVCBrDataControl que entrega o mecanismo básico a todo componente DB. Ele que faz a ligação com evento “OnChange” do Datasource com a base do novo componente, vejamos como ficou…


  TDBToggleSwitch = class(TToggleSwitch)
  private
    ...
  published
    property ValueTrue: string read FValueTrue write SetValueTrue;
    property ValueFalse: string read FValueFalse write SetValueFalse;
    property DataField: string read GetDataField write SetDataField;
    property Datasource: TDatasource read GetDatasource write SetDatasource;
  end;


as propriedades
Datasource e DataField são comuns aos componentes DB para ligar TDatasource e coluna da tabela;
ValueTrue: indicar qual o valor encontrado na tabela que indica ON;
ValueFalse: indicar qual o valor encontrado na tabela que indica OFF;

Unit completa no GIT