[MÚSICA]
No exercício anterior, temos nossos servidores de loopback até um certo estágio.
Agora somos capazes de conectar nossos servidores de loopback ao banco de dados mongolab,
o banco de dados atuando como a fonte de dados para nossos servidores de loopback.
Também definimos listas controladas de acesso para controlar o acesso ao raio, o
resto está aqui, em partes com o nosso servidor de loopback.
Neste exercício, vamos explorar as relações de loopback.
Agora podemos definir modelos e definir relações entre os modelos.
Então, por exemplo, vamos dar o exemplo de um comentário.
Quando você postar um comentário sobre um prato, o comentário está relacionado ao prato.
Um comentário pertence a um prato.
Da mesma forma, um comentário é postado por um usuário específico.
Assim, o comentário tem pertence à relação com este usuário específico.
Agora, quando você olha para o relacionamento na direção inversa,
um prato pode ter vários comentários associados a ele, e da
mesma forma, um usuário pode ter postado vários comentários.
Portanto, estes são os maiores tipos de relações que você pode definir entre
os vários modelos dentro do nosso servidor de loopback.
Também analisaremos o uso de um loopback misturado, o
que nos permite adicionar propriedades adicionais aos nossos modelos.
No final deste exercício você terá um servidor de loopback praticamente completo,
que podemos então conectar ao nosso cliente angular e
ser capaz de usá-lo como o back-end para o nosso cliente angular.
Para continuar com o exercício, na pasta do nosso servidor de loopback,
vamos criar um novo modelo para um comentário.
Então este modelo irá definir como
comentário, e neste caso esse modelo também é salvo
no MongoDB e será como um modelo persistente,
e vamos expor o comentário através da API REST e
a pasta modelo está na pasta comum e para
este comentário teremos duas propriedades associadas com ele.
E a primeira propriedade é Rating.
Que é do tipo Number.
Isso é obrigatório e o valor padrão, vou deixar isso como 5.
E a segunda propriedade seria Comment, que é do tipo string.
Isso é necessário e o valor padrão está vazio.
Assim, cada comentário terá essas duas propriedades, classificação e comentário,
associados a ele.
Além disso, precisamos agora definir a relação entre o comentário eo
usuário que está enviando o comentário, e também o comentário eo
prato com o qual este comentário está associado.
Da mesma forma, vimos no exercício anterior que eles adicionaram
seus favoritos para um usuário.
Então, para definir os favoritos, deixe-me definir novamente um modelo,
e esse nome do modelo é Favorito e isso também é salvo no MongoDB,
e este também é um PersistedModel, e
vamos expor o favorito para o resto API e está na pasta comum.
Agora o favorito em si não precisa de nenhuma propriedade específica, porque todo
o favorito faz é associar o usuário específico com este prato específico.
Então o favorito aqui vai ser usado simplesmente como uma ponte entre o usuário
eo prato.
Então, vamos usar o favorito como uma forma de definir as relações entre o prato e
um usuário.
Então ele não tem nenhuma propriedade específica.
Então agora nós adicionamos dois modelos em nosso servidor de loopback.
Agora, vamos começar a definir as relações modelo.
Agora, como expliquei anteriormente,
existem vários tipos de relações modelo que podemos definir.
Vamos começar com a definição da relação entre um prato e um comentário.
Então, para definir um modelo em loopback, vamos dizer, relação lb.
E quando a relação entra,
precisamos especificar o modelo a partir do qual criar a relação.
Então, em primeiro lugar, vamos criar uma relação entre um prato.
Então, a partir dos pratos, e um prato pode ter muitos comentários associados a ele,
então é por isso que o tipo de relação tem muitos e
está associado com um comentário e o nome da propriedade para a relação
eu vou deixá-lo como o padrão com apenas comentário com uma pequena letra c.
Agora podemos criar um chave estrangeira personalizada específica se quisermos.
Se não o fizermos, o loopback atribuirá automaticamente a chave estrangeira, o
que não seria nada além dos comentários e um id associado a ela.
Então ele vai olhar para trás para defini-lo automaticamente.
Também podemos ter através de modelos, que neste caso não é aplicável.
Um modelo através nos permitirá definir relação com um e com outro modelo e,
neste caso, não temos tal relação, então vamos apenas dizer não e
não vamos aninhar a API REST, e também,
vamos desativar a relação de ser incluída.
E assim, nós especificamos
que a desativação do relacionamento de ser incluído é não.
Mais tarde, você verá por que isso é importante.
Teríamos uma maneira de incluir informações de um
modelo em outro modelo, fazendo uma inclusão lá.
Portanto, isso é algo que pedimos para não ser impedido.
Agora, da mesma forma, podemos definir a próxima relação
entre comentário e os pratos.
Então, quando você define uma relação com o comentário e os pratos, então
deixe-me dizer que relação lb, e vamos agora definir a relação entre o comentário.
E uma vez que um comentário só pode pertencer a um prato específico, então
vamos definir que pertence a um relacionamento, e isso pertence
ao prato aqui e o nome da propriedade para a relação seria pratos.
E não usaremos uma chave estrangeira personalizada,
permitiremos que o relacionamento seja usado nas APIs REST.
Na verdade, nós não queremos isso, então eu deveria ter digitado não para isso,
mas eu vou apenas ir e editar a relação criada no meu código lá.
Então eu posso ir para o arquivo comment.jason e
apenas mudar isso de um sim para um não lá dentro,
eu vou fazer isso porque eu não quero que ele seja aninhado em seguida.
Então deixe-me ir em frente e
fazer essa mudança no comentário chamado Jason antes que eu esqueça de fazer isso.
E então abra o comentário chamado Jason.
E você vê que no comentário chamado Jason nós temos esse relacionamento aqui e
então eu vou cortar isso porque eu não quero que esse ninho seja feito.
Foi um erro que cometi ao digitar, então vou apagar isso.
A próxima relação que vou definir é entre o comentário e
o cliente.
Deixe-me novamente, digite a relação lb aqui.
Então vamos definir a relação entre o comentário e o cliente.
Um comentário pertence a um cliente como seria de esperar,
e, Aqui deixe-me
entrar explicitamente, Uma chave estrangeira personalizada.
Só estou fazendo isso para ilustrar que posso
definir uma chave estrangeira específica aqui.
Eu não vou ninho, e eu não vou desativar aqui.
Então, esta é a relação que vou definir entre o comentário e
o cliente.
Em seguida, Deixe-me definir a relação entre o cliente eo comentário.
Então, aqui, de um cliente, um cliente tem muitos comentários,
e seu nome de propriedade vou inserir como comentários.
E, em seguida, vou definir a chave estrangeira como CustomerID.
E eu não preciso de um modelo através aqui, eu não vou ninho e eu não vou desativar.
Então agora eu defini todas as relações entre os comentários e
o cliente, e os comentários e os pratos.
Agora, a mesma coisa, vamos trabalhar nos favoritos.
Agora, para os favoritos, deixe-me definir
a relação entre os pratos e os favoritos.
Assim, um prato poderia ter sido favoritos para muitos usuários,
por isso tem muitos relacionamentos com um favorito.
E nós vamos usar favoritos lá, e
nós não vamos precisar de um modelo através e não e não.
Então, agora nós definimos que tem muitas relações entre o prato e
um favorito.
Deixe-me agora definir uma relação entre um favorito e um prato.
Então, para definir a relação entre o favorito eo
prato deixe-me dizer favorito pertence ao prato, e
vamos usar os pratos e nenhuma chave estrangeira, não aninhado.
E não vamos desativar a relação de ser incluída.
Agora, vamos ter que definir essa relação entre
um favorito e um cliente.
Então, vamos dizer favorito pertence a um cliente e,
Vamos defini-lo chave estrangeira como um CustomerID.
Não permitiremos o aninhamento da API REST e não desativaremos.
Agora, a última relação, é entre o cliente e o favorito.
Então, agora vamos definir a relação entre o cliente tem muitos,
Favoritos, e isso,
eu vou definir o CustomerID como a chave estrangeira, eu não exijo um modelo através,
e eu não vou permitir o aninhamento e eu não vou desativar nada.
Então é isso, definimos todas as relações que precisamos
entre os comentários e os clientes e os pratos.
Entre os favoritos, os clientes e os pratos.
Agora, vamos examinar o uso de um mixin.
Agora, este mixin que eu vou usar com meu servidor Loopback é
um mixin que adiciona carimbos de data/hora a qualquer coisa que é salvo ou atualizado.
Portanto, lembre-se que em nosso servidor Express, tivemos o criado em e
atualizado em adicionado automaticamente usando Mangusto.
Agora, para Loopback, eu preciso usar este
mixin específico chamado como Lookback ds timestamp mixin.
para ToSDo que eu tenho que primeiro instalar o mixin no meu projeto.
Então eu vou dizer npm install
loopback-ds-timestamp-mixin —save,
e instalar este módulo de nó.
E uma vez que este módulo de nó é instalado, então como você pode ver,
esta é a versão número 3.4.1 que eu estou usando.
Como este mixin está instalado, eu preciso entrar e
habilitar esse uso de mixin dentro dos meus modelos.
Para fazer isso, vamos para o código, no código deixe-me primeiro abrir
esse conflito modelo adjacente, que está na pasta do servidor.
Então, no modelo confi.json se você subir aqui você verá esses
mixins definidos aqui.
Então temos os mixins de loopback comum e servidor de loopback.
Agora eu vou adicionar no novo mixin que acabei de adicionar aqui.
Então, este mixin está em.. /node_modules.
Então isso está na pasta de módulos de nó ali mesmo.
/loopback-ds-timestamp-mixin.
Isso permite que meu servidor Loopback faça uso deste mixin dentro do meu servidor.
Agora não só isso, eu preciso especificar para
todos os modelos onde eu quero que este mixin seja incluído.
Então, eu vou agora para essa pasta comum, e
na pasta comum vamos editar esse arquivo comment.json e
no arquivo comment.json, vamos adicionar no mixin.
Então, após as propriedades, vou adicionar no mixin como
sincronização entre aspas, você vai dizer mixins.
:, E, lá,
e dentro dos mixins vamos ver
timestamp, true.
Esta mesma coisa que eu preciso para colar em alguns dos outros modelos então
deixe-me apenas copiar isso.
Então, vamos dizer mixins TimeStamp verdadeiro em comments.json.
Então vamos para dishes.json e,
em seguida, vamos adicionar isso também para dishes.json e,
em seguida, eles vão para favorite.json, e em
seguida, adicionar em favorite.json.
Vamos adicioná-lo a readers.json, e
adicioná-lo a promotions.json.
E salve todas as alterações.
Agora vamos configurar mais alguns lista de controle de acesso, então
indo para o terminal deixe-me digitar lb acl para configurar algumas listas de controle de acesso.
Então, aqui para os pratos,
especificarei para todos os métodos e propriedades o direito
Só pode ser feito pelo usuário com o administrador de função.
Então esse é o primeiro controle de acesso que eu configurei para
pratos, então eu faço o mesmo para líderes.
Todos os métodos e propriedades, gravação, outros,
a função de administrador explicitamente concedem acesso.
Em seguida, para as promoções também
, o mesmo, todos os métodos e
propriedades, escrever, e outros,
Função explicitamente conceder acesso, porque você só quer que o administrador
seja capaz de fazer quaisquer alterações nos pratos, promoções ou líderes.
Agora, para os comentários, os comentários podem ser postados por qualquer usuário registrado.
Então, para os comentários, deixe-me definir a ACL para os comentários.
Vamos dizer comentário, todos os métodos e
propriedades, todos os tipos, todos os usuários,
negam explicitamente o acesso.
Porque não queremos que eles sejam capazes de fazer todas as coisas.
Agora, vamos abrir apenas algumas das operações a serem habilitadas pelos usuários.
Então, para comentários, todos os métodos e
propriedades, vamos dizer operação de leitura. A
operação de leitura para os comentários será apenas um usuário autenticado.
Assim, somente os usuários que estiverem conectados poderão ler os comentários.
Agora, da mesma forma, deixe-me definir para o
, Comentários, um único método, e
criar, quem pode criar comentários?
Qualquer usuário autenticado, qualquer usuário autenticado pode criar comentários.
Então vamos explicitamente conceder-lhes o acesso, agora,
o último para comentários, Vamos dizer para
o comentário, todos os métodos e propriedades.
Escrever, o que significa que, quem tem permissão para escrever o comentário?
Somente o usuário que possui esse objeto pode fazer alterações no comentário.
Portanto, apenas o usuário que enviou o comentário pode fazer alterações no comentário,
editar ou excluir o comentário, então é isso que vamos permitir.
Mesmo conjunto de operações, vamos aplicá-los aos favoritos.
Então, para os favoritos, já que não adicionamos
nenhum dos controles de acesso, portanto, para os favoritos,
todos os métodos e propriedades, todos os tipos, todos
os usuários, negam explicitamente o acesso lá.
Para favoritos, vamos definir para
todos os métodos e propriedades, ler,
apenas para o usuário que possui esse objeto.
Portanto, apenas o usuário pode ler
seus próprios favoritos, nenhum outro usuário deve ser capaz de ver seus próprios favoritos.
Agora, o terceiro é a criação de favoritos,
então, para a criação de favoritos, diremos para
favorito, um único método, criar,
qualquer usuário autenticado pode criar um comentário.
E por último, para um favorito, todos os métodos e
propriedades, a operação de gravação, apenas para o usuário que possui esse objeto.
Então, apenas o usuário que inseriu o favorito para
si mesmo pode editar ou excluir esses favoritos, é isso.
Por isso, criámos agora todos os controlos de acesso e
todas as várias relações para a nossa aplicação.
Vamos agora iniciar a API Rest do servidor e,
em seguida, explorar alguns desses detalhes.
Agora, indo para o nosso aplicativo no navegador, então
vamos para esse LoopBack Explorer no navegador aqui.
No LoopBack Explorer, o que vou fazer primeiro é fazer login como administrador.
Então, vamos fazer login como o administrador, indo para o /customers/login.
E então aqui vamos digitar nome de usuário,
administrador, senha,
senha, e logar nós mesmos,
e uma vez que tenhamos logado, eu vou apenas copiar este ID,
porque este é o token de acesso.
E eu vou entrar aqui, e então definir o token de acesso com
este novo token de acesso que eu acabei de obter, depois disso,
Deixe-me postar alguns pratos
no meu servidor, então agora que eu estou logado como um administrador,
eu deveria ser capaz de postar pratos no meu servidor.
Então eu vou abrir post, e lembrar que eu tinha dado o arquivo db.json,
então nós podemos apenas copiar e colar os pratos no campo de dados aqui.
Este é o meu primeiro prato, e no momento em que eu postar,
ele vai voltar com a informação prato aqui.
E note que ele adiciona automaticamente nos campos CreateDAT e UpdateDAT aqui.
Este é o meu segundo prato, então, finalmente, eu terminei de inserir todos os pratos,
todos os líderes, e todas as promoções, e estamos todos feitos.
Então vamos agora seguir em frente e
, em seguida, registrar um novo cliente no sistema.
Então, para fazer isso, deixe-me remover este
token de acesso, e então vamos registrar um novo cliente no sistema.
Então, para fazer isso, vamos para postar clientes, e, em seguida, para os dados,
deixe-me apenas clicar neste exemplo de valor aqui, e depois postá-lo aqui.
E para os dados, o primeiro nome,
deixe-me registar-me com o meu primeiro nome.
Então este seria um
usuário não-administrador que eu estou registrando, e,
e este e-mail verificou que eu deveria remover isso daqui, mas eu deveria incluir o
campo, senha aqui, para que eu possa registrar o usuário.
Então, estou registrando um novo usuário comum aqui.
Então, quando eu registro ele volta para confirmar que este novo
usuário registrado é adicionado, e também me dá um ID para esse usuário.
Agora deixe-me fazer login como este usuário registrado e, em seguida, postar um par de comentários.
Então, para fazer login como usuário registrado, vou até o login do cliente,
e para o nome de usuário, eu vou digitar meu nome e
a senha e, em seguida, quando eu entrar, ele vai voltar e me dar um ID.
Agora note que este usuário em particular é um usuário comum e não um administrador,
então este usuário só pode postar comentários e editar seus próprios comentários.
E ou pós-favoritos e editar seus próprios favoritos.
Então, quando você postar o usuário, você verá que é o UserID retornado aqui,
shis é o ID do usuário.
Então, precisamos disso sempre que postamos comentários ou
sempre que postamos nossos favoritos.
Então, para postar um comentário para este usuário, então
para postar um comentário, deixe-me postar alguns comentários em nome deste usuário.
Então, vamos para Comentários e, em seguida, vamos postar alguns comentários aqui.
Então, para postar um comentário como você percebe,
precisamos fornecer três peças de informação.
Precisamos fornecer o CustomerID, o DishesID, a classificação e o comentário.
Então, para o CustomerID, acabamos de fazer login, então
se você for até os clientes e aqui na parte inferior.
Vamos obter o CustomerID aqui, então deixe-me copiar o UserID daqui.
E, em seguida, vá para a seção de postagem de comentários e
cole o CustomerID lá.
Deixe-me agora ir e encontrar um prato.
Então, se você for para, Pratos e, em seguida, você faz um get sobre os pratos,
você vai ter todos os pratos que estão no sistema.
Então, a partir deste deixe-me selecionar o,
Primeiro prato, então eu vou apenas pegar o ID do prato.
Em seguida, para postar os comentários, vamos apenas para Comentários,
Postar onde estamos compondo nosso comentário.
E então eu vou colar a identidade do prato lá dentro.
E para a classificação, Eu vou mudar essa classificação para 4 e,
Basta postar, Este comentário,
então eu postei um comentário para este prato particular.
Deixe-me postar mais um comentário para outro prato.
Então deixe-me se apossar deste segundo prato.
Então, aqui está o ID do segundo prato assim, novamente, voltando para Comentários.
Deixe-me mudar o Dishid aqui.
E então, Deixe-me mudar os comentários para
que você veja que este é um comentário diferente para um prato diferente.
Quando eu postar o comentário, você veria que ele vai voltar com esta resposta aqui,
com a classificação e o prato específico e o CustomerID e assim por diante.
Então eu já postei dois comentários para dois pratos diferentes aqui.
Deixe-me, Faça estes dois como meus pratos favoritos.
Então, para fazer isso, deixe-me ir aos Favoritos.
Descendo para os favoritos.
Deixe-me postar alguns favoritos.
Então, para postar um favorito novamente, Eu vou para os favoritos post aqui.
Em seguida, clique sobre isso e, em seguida, eu vou colar em um DishID,
para o CustomerID, deixe-me apenas ir até o cliente aqui,
onde eu logado no cliente.
Então, vamos obter o UserID de lá.
E este é um CustomerID, então deixe-me ir para os Favoritos.
E, em seguida, Nos Favoritos
deixe-me testar o CustomerID aqui, e depois postar isso em meus favoritos.
Então, quando eu postar isso em meus favoritos ele responde de volta com isso para que
você possa ver que o DisHID e CustomerID e o FavoriteID foram postados aqui.
Deixe-me postar mais um prato para os meus favoritos então deixe-me ir para o,
Pratos aqui eu tenho outro prato.
Então deixe-me copiar o, ID do prato e ir para os meus favoritos e,
em seguida, substituir o ID do dishe com o novo prato, e depois postar isso.
Então agora eu deveria ter dois favoritos no meu grupo.
Maravilhoso, então agora temos um par de favoritos,
um monte de pratos, um par de comentários, todos postados.
Agora, como isso é útil?
Deixe-me, Feche tudo isso e, em seguida, irá mostrar-lhe como isso pode ser útil.
Então, agora quando eu pego pratos, então, por exemplo,
quando eu quero esquecer um prato específico.
Deixe-me obter este primeiro prato aqui, deixe-me copiar o ID do prato e,
Eu posso recuperar esse prato específico.
Então aqui você vê que eu estou indo para /Dishes/ID então
aqui, quando eu quero recuperar esse prato específico.
Eu posso colocar o DisHid lá e, em seguida, experimentá-lo e
, em seguida, aqui eu tenho o DisHid aqui.
Agora, se eu quiser incluir os comentários do prato, em seguida, no filtro,
Eu deveria digitar incluir entre aspas e, em
seguida, dentro de colchetes eu especificar,
O nome de,
A relação que eu quero incluir em que,
então, quando eu digo incluir comentários.
Então isso é como se os mongóis povoassem, ele age de forma semelhante.
Então, quando eu digo incluir comentários e, em seguida, recuperar o prato,
notar que quando o prato é recuperado,
Aqui, você começa o prato, mas também você recebe uma série de comentários aqui.
Então é assim que você pode preencher os detalhes da relação
que você tem com outro elemento aqui.
Agora, da mesma forma, indo para comentários, por exemplo.
Nos comentários também, quando recupero os comentários, posso especificar dentro do filtro.
Então, quando eu apenas digo GET comentários, ele vai trazer de
volta todos os comentários que foram postados.
Agora, se eu quiser preencher as informações DishID e CustomerID, posso dizer filtro.
No filtro, posso dizer incluir.
E então dentro de parênteses, eu posso dizer pratos porque
essa é a relação que eu defini dentro dos comentários e
dos pratos, e depois pratos e clientes.
E quando eu recuperar esta informação, você verá que nos comentários retornados,
para cada comentário, você vai notar que o comentário é dado e,
em seguida, a informação do prato correspondente também é preenchida, e
a informação correspondente do cliente também é preenchida para cada um dos comentários.
Assim, agora podemos preencher as duas relações que definimos
a partir dos pratos automaticamente aqui, como mostrado aqui.
Da mesma forma, para os favoritos,
quando estamos recuperando os favoritos,
diremos favoritos e um ID específico aqui.
E então podemos filtrar, para
que o favorito específico possa ser recuperado.
Você não pode recuperar todos os favoritos porque eles podem ser favoritos de outros
usuários também nessa lista, então não seremos capazes de fazer um GET em todos os favoritos.
Mas ao invés disso, quando recuperarmos isso, você pode pedir que
as informações sejam preenchidas aqui com base nos relacionamentos.
Então podemos dizer, entre aspas, (“incluir”: e colchetes escritos.
Podemos dizer ["pratos”, “cliente"]),
E recuperar as informações.
Então você notaria que aqui, no Corpo de Resposta,
você obtém o favorito, mas também o prato correspondente e
as informações correspondentes do cliente preenchidas aqui.
Então é assim que podemos recuperar informações adicionais
do nosso site de servidor, conforme necessário.
Com isso, completamos este exercício.
Neste exercício, eu tenho demonstrado a você como podemos definir várias relações
e,
em seguida, ser capaz de recuperar informações, e também usar este filtro incluir a fim de incluir as informações adicionais desse relacionamento
no documento quando você recuperar o documento ou um conjunto de documentos.
Com isso, completamos este exercício.
Então, nesses três exercícios que fizemos até agora com LoopBack, eu
ilustrei vários aspectos de como você pode configurar e construir seu servidor LoopBack.
Com isso, completamos este exercício.
Este é um bom momento para
você fazer um comentário GET com as relações LoopBack mensagem.
[ MUSIC]