2014-09-10 8 views
0

Ceci est mon premier post et ont besoin de savoir comment je résolus mon problèmeNodeJS Mongoose Trouver des valeurs concaténer

J'ai ce code

var searchParams = '{}'; 
if(typeof nt !== 'undefined') {searchParams = {ticket: {$regex: nt}};} 
if(typeof tp !== 'undefined') {searchParams = searchParams + {typet: {$regex: tp}};} 
if(typeof st !== 'undefined') {searchParams = searchParams + {status: {$regex: st}};} 

Mais lorsque je tente de mettre « searchParams » dans ma trouvaille ne fonctionne pas Ceci est mon code dans mon Rechercher

db.iModel.find(
     searchParams, 
{status:1,datestart:1,typet:1}, 
     {skip:start,limit:limit}).sort(sortParams).execFind(function (err, IncidentSchema) { 

Je pense que problème peut est avec « searchParams + {TypeT: {$ regex: tp}} » ce n'est pas la façon de travailler. c'est becouse j'essaye seulement un paramètre travaille !!! mais Wend essayer plusieurs paramètres ne fonctionne pas

avec journal de la console avec un seul paramètre est une chaîne simple mais avec le paramètre plus retourner ce [objet objet] [objet objet]

désolé mon anglais, je suis espagnol

Merci

Répondre

0

Les requêtes sur MongoDB sont représentées en tant qu'objets et non en tant que chaînes. Donc, vous ne « concaténer », mais plutôt « construire » l'objet comme vous le feriez dans le code natif: Juste

var searchParams = {}; 
if(typeof nt !== 'undefined') { searchParams["ticket"] = { $regex: nt } } 
if(typeof tp !== 'undefined') { searchParams["typet"] = { $regex: tp } } 
if(typeof st !== 'undefined') { searchParams["status"] = { $regex: st } } 

console.log(JSON.stringify(searchParams, undefined, 2)); 

que la connexion afin que vous puissiez voir ce que l'objet de requête résultant ressemble.

Notez également que les arguments de la requête MongoDB sont par défaut un « et » l'opération, donc si votre voulez vraiment une condition $or où l'une de ces conditions peut être vrai, alors vous construisez cette façon en appuyant sur le tableau:

var searchParams = { "$or": [] }; 
if(typeof nt !== 'undefined') { seachParams["$or"].push({ "ticket": { $regex: nt }}); } 
if(typeof tp !== 'undefined') { searchParams["$or"].push({ "typet": { $regex: tp }}); } 
if(typeof st !== 'undefined') { searchParams["$or"].push({ "status": { $regex: st }}); } 

console.log(JSON.stringify(searchParams, undefined, 2)); 
+0

Merci les hommes, enfin je finis ma recherche avec Nodejs + jqgrid – JorgeFo

Questions connexes