3.4 KiB
3.4 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
589a8eb3f9fc0f352b528e72 | Implementation of Social Authentication III | 2 | Implementação da Autenticação Social III |
Description
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
Tests
tests:
- text: Configuração da estratégia do Github completa
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /GitHubStrategy[^]*db.collection/gi, "Strategy should use now use the database to search for the user"); assert.match(data, /GitHubStrategy[^]*socialusers/gi, "Strategy should use "socialusers" as db collection"); assert.match(data, /GitHubStrategy[^]*return cb/gi, "Strategy should return the callback function "cb""); }, xhr => { throw new Error(xhr.statusText); })'
Challenge Seed
Solution
// solution required