2017-10-16 5 views
0

Hey j'essaie de changer la valeur d'une variable en dehors des fonctions de requête Mongoose dans une fonction express. Voici un exemple de mon code:Comment faire un changement de variable dans les fonctions Mongoose

//Register 
router.post('/register', (req, res, next) => { 
    let newUser = new User({ 
    name: req.body.name, 
    email: req.body.email, 
    username: req.body.username, 
    password: req.body.password 
    }); 

    var exists; 

    User.findOne({ 
      email: req.body.email 
     }, function (err, existingUser) { 

      if (existingUser) { 
       console.log('Email exists'); 
       exists = true; 
      } 
     }); 
    User.findOne({ 
      username: req.body.username 
     }, function (err, existingUser) { 

      if (existingUser) { 
       console.log('Username exists'); 
       exists = true; 
      } 
     }); 

    console.log(exists); 
    if (exists == true) { 
    res.json({ 
     success: false, 
     msg: 'Email or username is already registered' 
    }) 
    } 
}); 

La variable « existe » est toujours définie même lorsque la condition ExistingUser est vrai. Comment puis-je modifier la variable ou est-ce la meilleure façon de le faire?

+0

Les requêtes mingoose sont asynchrones. – TGrif

+0

@TGrif est là de toute façon que je peux contourner cela pour atteindre mon objectif? – Axelotl

+0

Oui, vous pouvez utiliser une bibliothèque de contrôle de flux comme décrit [ici] (https://stackoverflow.com/a/6181967/5156280). – TGrif

Répondre

0
`//Register 
router.post('/register', (req, res, next) => { 
    let newUser = new User({ 
    name: req.body.name, 
    email: req.body.email, 
    username: req.body.username, 
    password: req.body.password 
    }); 

    var exists; 

    User.findOne({ 
    '$or': [{ 
     email: req.body.email 
    }, { 
     username: req.body.username 
    }] 
    }, function (err, existingUser) { 
    if (existingUser) { 
     console.log('Email exists'); 
     exists = true; 
    } 
    console.log(exists); 
    if (exists == true) { 
     res.json({ 
     success: false, 
     msg: 'Email or username is already registered' 
     }) 
    } 
    }); 

})` 

Essayez le code ci-dessus.