title: Identifier … has already been declared
body: <p>I'm building a social network to learn nodejs and reactjs. Currently while building the backend in the <code>/signin</code> debug with postman I can't even launch the node server, the cmd throws the following error:</p>
  
  <pre><code>\node_react\2\nodeapi\controllers\auth.js:40
  const {_id, name, email} = user;
            ^
  SyntaxError: Identifier 'email' has already been declared    
  </code></pre>
  
  <p>The code snippet which throws the error is the following:</p>
  
  <pre><code>//generate a token with user id and secret
  const token = jwt.sign({_id: user._id}, process.env.JWT_SECRET);
  
  //persist the token as 't' in cookie with expiry date
  res.cookie("t", token, {expire: new Date() + 9999});
  
  //return response with user and token to frontend client
  const {_id, name, email} = user;
  return res.json({token, user:{_id, email, name}});
  </code></pre>
  
  <p>The complete auth.js code is the following :</p>
  
  <pre><code>const jwt = require("jsonwebtoken");
  require ('dotenv').config();
  const User = require("../models/user");
  
  exports.signup = async (req, res) =&gt; {
      const userExists = await User.findOne({email: req.body.email});
      if(userExists) 
          return res.status(403).json({
              error: "Email is taken!"
          }); 
      const user = await new User(req.body);
      await user.save();
      res.status(200).json({ message: "Signup success! Please login:)" });
  };
  
  exports.signin = (req,res) =&gt; {
      //find the user based on email
      const { email, password } = req.body 
      User.findOne({email}, (err, user) =&gt; {
          //if error or no user
          if (err || !user) {
              return res.status(401).json({
                  error: "User with that email does not exists. Please signin."
              });
          }
          //if user is found make sure the email and password match
          // create authenticate method in model and use here
          if (!user.authenticate(password))
              return res.status(401).json({
                  error: "Email and password do not match."
              });
      })
  
      //generate a token with user id and secret
      const token = jwt.sign({_id: user._id}, process.env.JWT_SECRET);
  
      //persist the token as 't' in cookie with expiry date
      res.cookie("t", token, {expire: new Date() + "9999"});
      //return response with user and token to frontend client
      const {_id, name, email} = user;
      return res.json({token, user:{_id, email, name}});      
  }
  </code></pre>