3.4 KiB
3.4 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
589a8eb3f9fc0f352b528e72 | Implementation of Social Authentication III | 2 | Implementación de la autenticación social III |
Description
console.log(profile);
actualmente es: db.collection ('socialusers'). findAndModify ( {id: profile.id}, {}, {$ setOnInsert: { ID: profile.id, nombre: profile.displayName || 'John Doe', foto: profile.photos [0] .value || ", correo electrónico: profile.emails [0] .value || 'No hay correo electrónico público', created_on: new Date (), Proveedor: profile.provider || " }, $ set: { last_login: new Date () }, $ inc: { login_count: 1 }}, {upsert: true, new: true}, (err, doc) => { devuelve cb (null, doc.value); } );Con un findAndModify, le permite buscar un objeto y actualizarlo, así como subir el objeto si no existe y recibir el nuevo objeto cada vez en nuestra función de devolución de llamada. En este ejemplo, siempre establecemos el last_login como ahora, siempre incrementamos el login_count en 1, y solo cuando insertamos un nuevo objeto (nuevo usuario) llenamos la mayoría de los campos. Algo para notar también es el uso de valores por defecto. A veces, un perfil devuelto no tendrá toda la información completada o el usuario la habrá elegido para que permanezca privada; Así que en este caso tenemos que manejarlo para evitar un error. Debería poder iniciar sesión en su aplicación ahora, ¡pruébelo! Envía tu página cuando creas que lo has hecho bien. Si te encuentras con errores, puedes ver un ejemplo del código terminado de este mini-proyecto aquí .
Instructions
Tests
tests:
- text: Configuración de la estrategia de 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