2014-05-19 3 views
0

J'ai essayé de faire fonctionner cette requête et je suis extrêmement frustrée.Création d'une requête conditionnelle mongoose

J'essaie de faire une recherche par rapport à l'adresse e-mail ou au nom d'utilisateur avec l'e-mail ne correspondant pas à celui passé. Je passe searchstr et envoie un courriel à la fonction. J'arrive aussi loin que l'étape 1 et cela me donne une erreur indéfinie. Il s'en va quand je commente tout sauf le var query = user.find().

J'ai également essayé user.find({email:searchstr}); pour m'assurer que ce n'est pas la requête mais cela fonctionne.

Qu'est-ce que je fais mal?

var friendlist = { friendslist: []}; 

var query = user.find(); 
query.or([{ email: searchstr }, { username: searchstr }]); 
//query.where(email); 
//query.ne(email); 

query.exec(function (err,users) { 
    if(err != null) {console.log(err); callback({'res': false});} 
    console.log('step1') 
    users.forEach(function (err,userss) { 
     if(err != null) {console.log(err); callback({'res': false});} 
     console.log('step2') 
     friendlist.friendslist.push({ 
        "profileURLImage" : userss.profile_pic_server, 
        "currentStatus" : userss.profile_status, 
        "userName" : userss.username, 
        "email" : userss.email, 
        "online_status" : userss.online_status 
       }); 
    }); 
}); 
+0

Ce qui ne fonctionne pas exactement pour vous? La condition de la requête va essayer de faire correspondre "email" et si cela renvoie false, alors essayer de faire correspondre "nom d'utilisateur". –

+0

Il me donne une erreur indéfinie, mais il fonctionne à la seconde je commente la fonction ou. –

+0

Peut-être montrer un exemple de document pour rendre votre question plus claire pour les autres. –

Répondre

0

Je n'ai pas la requête de travailler comme je le voulais, mais je l'ai fait obtenir une solution de contournement pour cela, si quelqu'un peut donner une meilleure réponse qui fonctionne que je vais le sélectionner comme la réponse.

erreur principale que j'ai fait était dans le forEach car il n'y a pas une variable err je suppose.

var friendlist = { friendslist: []}; 

var query = user.find(); 
query.or([{ email: searchstr }, { username: searchstr }]); 
//query.where(email); 
//query.ne(email); 

query.exec(function (err,users) { 
    if(err != null) { console.log('error'); console.log(err); callback({'res':false});} 
    users.forEach(function (userss) { 
     if(userss.email != email) { 
      friendlist.friendslist.push({ 
        "profileURLImage" : userss.profile_pic_server, 
        "currentStatus" : userss.profile_status, 
        "userName" : userss.username, 
        "email" : userss.email, 
        "online_status" : userss.online_status 
       }); 
     } 
    }); 
    callback({'friends': friendlist.friendslist, 'res':true}); 
});