4.5 KiB
4.5 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
5895f70cf9fc0f352b528e66 | Serialization of a User Object | 2 | Serialización de un objeto de usuario |
Description
passport.serializeUser( OURFUNCTION )
y passport.deserializeUser( OURFUNCTION )
Se llama a serializeUser con 2 argumentos, el objeto de usuario completo y una devolución de llamada utilizada por el pasaporte. Devuelto en la devolución de llamada debe ser una clave única para identificar a ese usuario; la más fácil de usar es que los usuarios _id en el objeto, ya que debe ser único, tal como lo generó MongoDb. De manera similar, se llama a deserializeUser con esa clave y también con una función de devolución de llamada para el pasaporte, pero esta vez tenemos que tomar esa clave y devolver el objeto completo de los usuarios a la devolución de llamada. Para realizar una búsqueda de búsqueda de un _id Mongo, tendrá que crear const ObjectID = require('mongodb').ObjectID;
y luego, para usarlo, se llama new ObjectID(THE_ID)
. Asegúrese de agregar MongoDB como una dependencia. Puedes ver esto en los siguientes ejemplos: passport.serializeUser ((usuario, hecho) => { hecho (nulo, usuario.id); });
passport.deserializeUser ((id, done) => { db.collection ('usuarios'). findOne ( {_id: nuevo ObjectID (id)}, (err, doc) => { hecho (nulo, doc); } ); });NOTA: este deserializeUser generará un error hasta que configuremos la base de datos en el siguiente paso, así que comente el bloque completo y simplemente llame al final
done(null, null)
en la función deserializeUser. Envía tu página cuando creas que lo has hecho bien. Instructions
Tests
tests:
- text: Serializar la función de usuario correcta
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /passport.serializeUser/gi, "You should have created your passport.serializeUser function"); assert.match(data, /null, user._id/gi, "There should be a callback in your serializeUser with (null, user._id)"); }, xhr => { throw new Error(xhr.statusText); })'
- text: Deserializar la función de usuario correcta
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /passport.deserializeUser/gi, "You should have created your passport.deserializeUser function"); assert.match(data, /null,( |)null/gi, "There should be a callback in your deserializeUser with (null, null) for now"); }, xhr => { throw new Error(xhr.statusText); })'
- text: MongoDB es una dependencia
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/package.json") .then(data => { var packJson = JSON.parse(data); assert.property(packJson.dependencies, "mongodb", "Your project should list "mongodb" as a dependency"); }, xhr => { throw new Error(xhr.statusText); })'
- text: Mongodb correctamente requerido incluyendo el ObjectId
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /require.*("|")mongodb("|")/gi, "You should have required mongodb"); assert.match(data, /new ObjectID.*id/gi, "Even though the block is commented out, you should use new ObjectID(id) for when we add the database"); }, xhr => { throw new Error(xhr.statusText); })'
Challenge Seed
Solution
// solution required