Ожидаемая «полезная нагрузка» будет простым объектом: MEAN - PullRequest
0 голосов
/ 12 октября 2018

Это мой код из файла маршрутов (users.js)

User.findOne({linkedin_id: req.body.linkedin_id}, function(err, linkedinUser) {
    if(err) {
      console.log('err in finding linkedin user '+err);
    }
    // if user exits
    else if(linkedinUser) {
      console.log('user exist');
      const token = jwt.sign(linkedinUser, config.secret, {expiresIn: 604800});
      res.json({success: true, token: 'JWT '+token, user: {
          id: linkedinUser._id,
          linkedin_id: linkedinUser.linkedin_id,
          name: linkedinUser.name,
          username: linkedinUser.username,
          email: linkedinUser.email,
          lkprofilePic: linkedinUser.profilePic
        }, msg: 'user exits'
      });
    }
    // if user doesn't exist
    else {
      User.create({
        linkedin_id: req.body.linkedin_id,
        name: req.body.name,
        username: req.body.username,
        email: req.body.email,
        lkprofilePic: req.body.lkprofilePic
      }, function(err, result) {
        if(err) {
          res.json({success: false, msg: 'failed to add'})
          console.log('error in adding the data '+err);
        }
        else if(result) {
          const token = jwt.sign(linkedinUser,config.secret,{ expiresIn: 604800 });
          res.json({success: true, token: 'JWT '+token, user: {
            id: result._id,
            linkedin_id: result.linkedin_id,
            name: result.name,
            username: result.username,
            email: result.email,
            lkprofilePic: result.profilePic
          }, msg: 'User added '  });
        }
      });
    }
  });

Это из config -> secret

module.exports = {
    secret: 'bigfish'
  }

Это ошибка, которую я получаю в nodejsconsole

Получение данных linkedin D: \ product \ project-1 \ node_modules \ mongodb \ lib \ utils.js: 132 throw err;^

Ошибка: ожидаемая «полезная нагрузка» будет простым объектом.при проверке (D: \ product \ project-1 \ node_modules \ jsonwebtoken \ sign.js: 34: 11) при validatePayload (D: \ product \ project-1 \ node_modules \ jsonwebtoken \ sign.js: 56: 10) в объекте.module.exports [as sign] (D: \ product \ project-1 \ node_modules \ jsonwebtoken \ sign.js: 108: 7) в D: \ product \ project-1 \ rout \ users.js: 415: 29 вФункция.(D: \ product \ project-1 \ node_modules \ mongoose \ lib \ model.js: 4177: 16) параллельно (D: \ product \ project-1 \ node_modules \ mongoose \ lib \ model.js: 2230: 12)в D: \ product \ project-1 \ node_modules \ mongoose \ node_modules \ async \ internal \ parallel.js: 35: 9 в D: \ product \ project-1 \ node_modules \ mongoose \ node_modules \ async \ internal \ Once.js: 12: 16 в iteratorCallback (D: \ product \ project-1 \ node_modules \ mongoose \ node_modules \ async \ eachOf.js: 52: 13) в D: \ product \ project-1 \ node_modules \ mongoose \ node_modules \ async \internal \ onlyOnce.js: 12: 16 в D: \ product \ project-1 \ node_modules \ mongoose \ node_modules \ async \ internal \ parallel.js: 32: 13 при применении (D: \ product \ project-1 \ node_modules \lodash_apply.js: 15: 25) в D: \ product \ project-1 \ node_modules \ lodash_overRest.js: 32: 12 в callbackWrapper (D: \ product \ project-1 \ node_modules \ mongoose \ lib \ model.js: 2199: 11) в D: \ product \ project-1 \ node_modules \ mongoose \ lib \ model.js: 4177: 16 в модели. $ __ save.error (D: \ product \ project-1 \ node_modules \ mongoose \ lib \ model.js: 359: 7)

НоДанные сохраняются в базе данных и не возвращают

res.json({success: true, token: 'JWT '+token, user: {
            id: result._id,
            linkedin_id: result.linkedin_id,
            name: result.name,
            username: result.username,
            email: result.email,
            lkprofilePic: result.profilePic
          }, msg: 'User added '  });

1 Ответ

0 голосов
/ 24 октября 2018

Проблема связана с тем, как вы подписали свой токен

Используемый вами пользователь является возвращенным пользователем из mongoose, поэтому вам нужно будет использовать YOUR_USER.toJSON .если пользователь не из Мангуста, используйте JSON.stringify (YOUR_USER) вместо

измените свой код на

const token = jwt.sign({linkedinUser}, config.secret, {expiresIn: 604800});
//if you want to set expiration on the token

ИЛИ

const token = jwt.sign(linkedinUser.toJSON(), config.secret);
//if you just want to sign the token without setting the expiration
...