HashLoad / horse

Fast, opinionated, minimalist web framework for Delphi
MIT License
1.17k stars 217 forks source link

Usando FDQuery ou ClientDataSet, mas em vão. #54

Closed AtVisionSistemas closed 4 years ago

AtVisionSistemas commented 4 years ago

Me tirem uma dúvida, tenho um servidor DataSnap já rodando e funcionando... semana passada procurando algo mais robusto e fácil achei o Horse, mas pesquisei em tudo quanto foi local, mas não consigo achar nada usando Horse com SQL Server e nos testes que faço não dá certo... Tentei algo como abaixo:

Tenho um DataModule com a conexão do banco (TFConnecttion) e as Querys (TFDQuery) O Token está sendo gerado certinho, porém rrtornar ums Select simples não vai. ... App.Get('/lista',JwtAuth, procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) begin dmInt.qryCliente.Close; dmInt.qryCliente.SQL.Text := 'Select top(5) cod_cliente, nome, cpf, dtnasc, sexo, celular, fone1,'#13+ ' fone2, email, endereco, numero, complemento, cep, cidade, '#13+ ' uf, bairro, psenha, dtcadastro, cod_logradouro, cod_bairro '#13+ ' From JsonCliente '; ' Where Cod_Cliente = :CodCliente'+#13; ' Order By cod_cliente desc '; dmInt.qryCliente.Open; Result := dmInt.qryCliente.AsJSONArray; dmInt.qryCliente.Close;

  Res.Send(LBody);

vocês poderiam ao menos me dá um norte?

viniciussanchez commented 4 years ago

Entre no grupo no Telegram: https://t.me/hashload

viniciussanchez commented 4 years ago

No exemplo acima voce deu um Res.Send(LBody), mas em nenhum momento eu vi ali voce criando esse LBody

viniciussanchez commented 4 years ago

Vi também que você está usando o DataSetConverter4Delphi certo? Para converter o DataSet em JSON? Da uma olhada nesse cara aqui https://github.com/viniciussanchez/dataset-serialize bem mais atualizado e tem muito mais recursos

AtVisionSistemas commented 4 years ago

No exemplo acima voce deu um Res.Send(LBody), mas em nenhum momento eu vi ali voce criando esse LBody

mas é ai que eu queria entender, tenho o Select, Tenho a TFDQuery, o DataModule, mas não sei onde encaixa aqui:

App.Get('/lista',JwtAuth, procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) var LBody: TJSONObject; Ljson : string;

begin
  Ljson := Req.Session<TJSONObject>.ToString;
  LBody := TJSONObject.ParseJSONValue(Ljson) as TJSONObject;
  Res.Send(LBody);
end

);

como faço um open close pra retornar o resultado, e estou usado o DataSetConverter4Delphi por conta do Servidor DataSnap

viniciussanchez commented 4 years ago

No código que você mandou você faz isso aqui:

Result := dmInt.qryCliente.AsJSONArray;

Basta você pegar essa linha e atribuir no lugar do LBory

Res.Send(query.asjsonarray);

viniciussanchez commented 4 years ago

Deu certo?

AtVisionSistemas commented 4 years ago

Deu, porém usei Json4Delphi pra fazer a integração, criei uma unit Interface criando os componentes, mas deu certo, pq do jeito que estava fazendo no código acima estava dando access violation na linha do dmInt.qryCliente.Close; mesmo eu chamando um DataModule, e dessa maneira rodou, estou fazendo alguns testes e assim que completar, se quiserem eu deixo o exemplo que usei pra vc colocar junto no Sample...