Como lembrete, este projeto está sendo construído sobre o seguinte projeto inicial no Glitch , ou clonado a partir do GitHub . A parte final da estratégia é manipular o perfil retornado do Github. Precisamos carregar o objeto de banco de dados de usuários, se existir, ou criar um, se não existir, e preencher os campos do perfil e, em seguida, retornar o objeto do usuário. O Github nos fornece um ID exclusivo dentro de cada perfil, que podemos usar para pesquisar com o serializador do usuário (já implementado). Abaixo está um exemplo de implementação que você pode usar em seu projeto - ele vai dentro da função que é o segundo argumento para a nova estratégia, logo abaixo do console.log(profile);
atualmente é: db.collection ('socialusers'). findAndModify (
{id: profile.id},
{}
{$ setOnInsert: {
id: profile.id,
nome: profile.displayName || 'John Doe',
foto: profile.photos [0] .value || "
email: profile.emails [0] .value || 'Nenhum email público',
created_on: new Date (),
provedor: profile.provider || "
}, $ set: {
last_login: new Date ()
}, $ inc: {
login_count: 1
}}
{upsert: true, new: true},
(err, doc) => {
return cb (null, doc.value);
}
);
Com um findAndModify, ele permite que você procure por um objeto e o atualize, além de fazer backup do objeto se ele não existir e receber o novo objeto de volta a cada vez em nossa função de retorno de chamada. Neste exemplo, sempre definimos o last_login como agora, sempre incrementamos o login_count por 1, e somente quando inserimos um novo objeto (novo usuário) preenchemos a maioria dos campos. Algo para notar também é o uso de valores padrão. Às vezes, um perfil retornado não terá todas as informações preenchidas ou será escolhido pelo usuário para permanecer privado; Portanto, neste caso, temos que lidar com isso para evitar um erro. Você deve conseguir acessar seu aplicativo agora - experimente! Envie sua página quando achar que está certo. Se você estiver com erros, você pode conferir um exemplo do código acabado deste mini-projeto aqui .
## Instructions