Obter livros com dados de autor em falta
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 10:53 minutos, caso você queira retroceder e ver o início da etapa novamente.)
Introdução
A Books4Everyone descobriu recentemente que tem vários livros sem autores listados. Eles querem um componente no canto inferior direito da página inicial para garantir que esses livros serão atualizados rapidamente. Desta vez, eles também forneceram uma consulta SQL.
Criar um right anti join
Veja a consulta SQL que eles forneceram.
SELECT Name, Description FROM Book WHERE Author IS NULL
Você sabe que em SOQL vamos escrever assim:
SELECT Name, Description__c FROM Book__c WHERE Author__c = null
Criar Apex e o novo componente
Agora, adicione a consulta SOQL ao controlador do Apex.
- No Developer Console, abra a classe do Apex Books4EveryoneHomeController.
- Adicione o seguinte bloco de código depois do primeiro método.
@AuraEnabled public static List<Book__c> getBooksWithoutAuthors(){ return [SELECT Name FROM Book__c WHERE Author__c = null]; }
Mais uma vez, crie um novo componente do Lightning para a página inicial.
- Feche as guias que possam estar abertas no Developer Console e selecione File (Arquivo) > New (Novo) > Lightning Component (Componente do Lightning).
- Dê ao seu novo componente do Lightning o nome de
Books4EveryoneMissingAuthors
. - 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="Books" type="Book__c" /> <aura:handler name="init" action="{!c.doInit}" value="{!this}"/> <lightning:card title="Books4Everyone Missing Author List"> <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> </tr> </thead> <tbody> <aura:iteration items="{!v.Books}" var="books"> <tr scope="row"> <td> {!books.Name}</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.getBooksWithoutAuthors"); action.setCallback(this, function(data) { component.set("v.Books", 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 Books4EveryoneMissingAuthors na lista de componentes personalizados.
- Arraste o componente até o painel do canto superior direito na 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: