Obter avaliações de livros
Acompanhar com o Trail Together
Deseja acompanhar um especialista enquanto trabalha nesta etapa? Veja este vídeo que faz parte da série Trail Together.
(Este clipe começa na marca dos 08:41 minutos, caso você queira retroceder e ver o início da etapa novamente.)
Introdução
A Books4Everyone ama o que você fez até agora e quer tornar seu aplicativo ainda mais robusto mostrando as avaliações de livros diretamente na página inicial. Para chamar a atenção da equipe de publicidade em relação a isso, eles pediram um novo componente para a página inicial. Assim como da outra vez, eles forneceram uma consulta SQL que você precisa transformar em consulta SOQL.
Criar um inner join
Antes de criarmos nossa consulta no Apex, vamos ver a consulta SQL.
SELECT r.Name, r.Review, r.Grade, b.Name FROM recommendation r, book b WHERE b.Id != null
Você sabe que Livro está relacionado com Recomendação em um relacionamento entre mestre e detalhes. Você escreve a seguinte consulta.
SELECT Name, Review__c, Rating__c, Book__r.Name FROM Recommendation__c WHERE Book__c != null
Criar Apex e o novo componente
Primeiro, adicione a nova consulta SOQL à classe de controladores do Apex.
- No Developer Console, abra a classe do Apex Books4EveryoneHomeController.
- Adicione o seguinte bloco de código depois dos primeiros dois métodos:
@AuraEnabled public static List<Recommendation__c> getBookRecommendations() { return [SELECT Name, Review__c, Rating__c, Book__r.Name FROM Recommendation__c WHERE Book__c != null]; }
Em seguida, crie um novo componente do Lightning e um controlador JavaScript.
- Crie outro componente clicando em File (Arquivo) > New (Novo) > Lightning Component (Componente do Lightning ).
- Dê ao seu novo componente do Lightning o nome de
Books4EveryoneRecommendations
. - Na seção de configuração do componente, selecione Lightning Page (Página do Lightning) e clique em Submit (Enviar).
- Substitua o código no arquivo .cmp por este código:
<aura:component implements="flexipage:availableForAllPageTypes" access="global" controller="Books4EveryoneHomeController"> <aura:attribute name="Recommendations" type="Recommendation__c" /> <aura:handler name="init" action="{!c.doInit}" value="{!this}"/> <lightning:card title="Books4Everyone Recommendations"> <aura:set attribute="body"> <table class="slds-table slds-table_bordered slds-table_cell-buffer"> <thead> <tr class="slds-text-title_caps"> <th scope="col">Book Title</th> <th scope="col">Rating</th> <th scope="col">Review</th> </tr> </thead> <tbody> <aura:iteration items="{!v.Recommendations}" var="recommendations"> <tr scope="row"> <td> {!recommendations.Book__r.Name}</td> <td> {!recommendations.Rating__c}</td> <td> {!recommendations.Review__c}</td> </tr> </aura:iteration> </tbody> </table> </aura:set> </lightning:card> </aura:component>
- Clique em Controller (Controlador) no lado direito da página a fim de criar um controlador para seu componente.
- Substitua o JavaScript do controlador pelo código a seguir.
({ doInit: function(component, event, helper) { var action = component.get("c.getBookRecommendations"); action.setCallback(this, function(data) { component.set("v.Recommendations", data.getReturnValue()); console.log(data.getReturnValue()); }); $A.enqueueAction(action); } })
- Salve todas as suas guias abertas.
Vejamos como esse componente funciona na prática!
Nossa etapa final é garantir que a consulta funcionou como esperado adicionando nosso componente à página inicial.
- Na sua organização, navegue até o aplicativo Books4Everyone.
- Clique em Home (Início).
- No canto superior direito, clique em e selecione Edit Page (Editar página).
- No lado esquerdo do criador de aplicativo Lightning, encontre Books4EveryoneRecommendations na lista de componentes personalizados.
- Arraste o componente até a página.
- Clique em Save (Salvar) e em para retornar à página inicial.
- A etapa final é verificar os dados na sua página inicial. Ela deverá ficar mais ou menos assim: