Ошибка ValidatorError: требуется указать путь `LastName`

#node.js #mongodb #passport.js #passport-google-oauth

#node.js #mongodb #passport.js #паспорт-google-oauth

Вопрос:

Я новичок в Node.js и действительно новичок в MongoDB.

Я пытаюсь создать систему аутентификации с использованием Google OAuth 2.0 и passport.

Я продолжаю получать эту ошибку: Error: User validation failed: lastName: Path `lastName` is required.

Вы можете мне помочь? Я получил этот код с GitHub и пытаюсь его изменить, но эта ошибка не позволяет мне продолжить мой проект.

Это проблемный код:

 const mongoose = require('mongoose')
const User = require('../models/User')

module.exports = function (passport) {
  passport.use(
    new GoogleStrategy(
      {
        clientID: process.env.GOOGLE_CLIENT_ID,
        clientSecret: process.env.GOOGLE_CLIENT_SECRET,
        callbackURL: '/auth/google/callback',
      },
      async (accessToken, refreshToken, profile, done) => {
        const newUser = {
          googleId: profile.id,
          displayName: profile.displayName,
          firstName: profile.name.givenName,
          lastName: profile.name.familyName,
          image: profile.photos[0].value,
        }

        try {
          let user = await User.findOne({ googleId: profile.id })

          if (user) {
            done(null, user)
          } else {
            user = await User.create(newUser)
            done(null, user)
          }
        } catch (err) {
          console.error(err)
        }
      }
    )
  )

  passport.serializeUser((user, done) => {
    done(null, user.id)
  })

  passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) => done(err, user))
  })
}
 

Комментарии:

1. Я бы рекомендовал проверить profile.name свойства. Ошибка mongoose сообщает вам lastName , что она отсутствует.

2. @jasonandmonte Боже мой, спасибо тебе! Я понял, что учетная запись Google, которую я использовал для входа в систему, не имела фамилии.