2017-04-07 91 views
0

我想从我的服务器转换我的客户端上由cookie传递的mongoDB数据。 我正在使用Express et React.js。在客户端将MongoDB数据转换为json

Cient:

export default class Profile extends React.Component { 

constructor(){ 
    super(); 
    this.state = {} 
} 

componentWillMount(){ 
    console.log(JSON.stringify(cookie.load('user'))) 
} 

render(){ 
    return (
     <div> 
      <h1>Profile</h1> 
     </div> 
    ) 
} 

的回报的console.log:

"j:{\"_id\":\"58e622ac7144862dbb5722f1\",\"password\":\"paswdtest\",\"email\":\"[email protected]\",\"pseudo\":\"testname\",\"__v\":0}" 

服务器:

const post = (req, res, next) => { 


if(req.body.pseudo && req.body.password) { 
     User.authenticate(req.body.pseudo, req.body.password, (error, user) => { 
      if(error || !user) { 
       var error = new Error('Wrong email or password') 
       error.status = 401; 
       return next(error); 
      } 
      else { 
       req.session.user = user; 
       res.cookie('user', req.session.user) 
       return res.redirect('/profile'); 
      } 
    }) 
    } 
    else { 
     var error = new Error('Email and password are required'); 
     error.status = 401; 
     return next(error); 
    } 
} 

我试图用解析转换和stringlify,但它不工作。

回答

1

MongoDB不返回JSON,而是返回扩展的JSON BSON

如果您的需求很简单,那么最快的方法可能是将BSON转换为JSON。

对于你的例子,这将是

以前

"j:{\"_id\":\"58e622ac7144862dbb5722f1\",\"password\":\"paswdtest\",\"email\":\"[email protected]\",\"pseudo\":\"testname\",\"__v\":0}" 

{"j":{"_id":"58e622ac7144862dbb5722f1","password":"paswdtest","email":"[email protected]","pseudo":"testname","__v":0}}