2017-08-25 31 views
0

screenshot of error我上的应用程序执行一个JSON网络令牌认证和我得到它说错误:未处理排斥类型错误“转换圆形结构为JSON”生成JSON网络令牌时

“未处理的排斥类型错误:转换圆形结构到JSON“

我进一步发现,当执行到达我的webtoken世代时会发生这个错误,因为当我评论它时没有发生错误。

请在下面找到我的代码:

const express= require("express"); 
    const router= express.Router(); 
    let Users = require("../models/users"); 
    const jwt= require("jsonwebtoken"); 
    const configuration = require("../config"); 
    const app = express(); 
    app.set("superSecret", configuration.secret); 

    //registered user submitting signin form 
    router.post("https://stackoverflow.com/users/signin", function(req, res, next){ 
     let confirm; 
     Users.findOne({ 
     where:{ username: req.body.username} 
     }).then(user => { 
     if(!user){ 
      res.send("No such users found!") 
     } 
     else if(user){ 
      confirmed = user.password === req.body.password; 
      if(confirmed){ 
      let token = jwt.sign(user, app.get("superSecret"), 
       {expiresIn: 1440}); 
        //expiresInMinutes 
       res.json({ 
          success: true, 
          message: "enjoy your json", 
          token: token 
          }) 
      } 
      else{ 
      res.send('incorrect password'); 
      } 
     } 
     }) 
    }); 

如果我注释掉让令牌= jwt.sign(用户,app.get(“绝密)..就没有错误 感谢。在

期待。在下面找到我的用户模型。

const Sequelize= require('sequelize') 
    const bcrypt = require('bcrypt-nodejs') 
    const sequelStorage = new Sequelize('newtrial', 'olatunji', '5432', { 
     host: 'localhost', 
     dialect: 'postgres', 

     pool: { 
     max: 5, 
     min: 0, 
     idle: 10000 
     }, 

    }); 


    let Users = sequelStorage.define('users', { 
     username:{ 
     type: Sequelize.STRING, 
     allowNull: false 
     }, 
     email: { 
     type: Sequelize.STRING, 
     allowNull: false, 
     unique: true, 
     validate: { isEmail: true} 
     }, 
     password:{ 
     type: Sequelize.STRING, 
     allowNull:false 
     }, 
     admin:{ 
     type: Sequelize.BOOLEAN, 
     allowNull: false, 
     default: false 
     } 
    }) 

    sequelStorage.sync() 
    [enter image description here][1] .catch(function(error){ 
     console.log(error); 
    }); 

    module.exports= Users; 
+0

你能分享错误堆栈跟踪吗? – Gaafar

+0

我已经添加了一个链接到问题顶部的错误截图 – OlatunjiYSO

回答

0

看来,它的失败到字符串化的有效载荷(user对象)at this line in a dependency of a dependency

无论如何,这可能是因为sequelize实体包装的,尝试调用它像这样

let token = jwt.sign(user.toJSON(), app.get("superSecret"), {expiresIn: 1440});

您可以检查这个问题更多的方式来从sequelize模型得到的纯对象:Sequelize, convert entity to plain object

+0

解决了它,它现在工作正常!谢谢 – OlatunjiYSO

+0

很高兴它的工作。如果解决了,请接受答案。 – Gaafar

相关问题