4.8 KiB
4.8 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
589a8eb3f9fc0f352b528e72 | Implementation of Social Authentication III | 2 | Внедрение социальной аутентификации III |
Description
console.log(profile);
в настоящее время: db.collection ( 'socialusers'). findAndModify ( {id: profile.id}, {}, {$ SetOnInsert: { id: profile.id, name: profile.displayName || 'Джон Доу', фото: profile.photos [0] .value || », email: profile.emails [0] .value || «Нет общедоступной электронной почты», created_on: новая дата (), провайдер: profile.provider || " } $ Установить: { last_login: новая дата () }, $ Вкл: { login_count: 1 }}, {upsert: true, new: true}, (err, doc) => { return cb (null, doc.value); } );С помощью findAndModify он позволяет вам искать объект и обновлять его, а также обновлять объект, если он не существует, и каждый раз получать новый объект обратно в нашей функции обратного вызова. В этом примере мы всегда устанавливаем last_login так же, как и сейчас, мы всегда увеличиваем значение login_count на 1, и только когда мы вставляем новый объект (новый пользователь), мы заполняем большинство полей. Также следует отметить использование значений по умолчанию. Иногда возвращаемый профиль не будет заполнен всей информацией или он будет выбран пользователем, чтобы оставаться закрытым; поэтому в этом случае мы должны обработать его, чтобы предотвратить ошибку. Теперь вы сможете войти в свое приложение - попробуйте! Представьте свою страницу, когда вы думаете, что у вас все в порядке. Если вы работаете в ошибки, вы можете проверить пример готового кода этого мини-проекта здесь .
Instructions
Tests
tests:
- text: Настройка стратегии Github завершена
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