Node.js DB Mongo find requête ne fonctionne pas comme prévu

voix
0

S'il vous plaît aidez-moi à trouver une erreur dans mon code

const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
var a = 2018;
var b = December;
var c = 12;
var temp = 17;

var query = `{'${b}.${c}.temp':'${temp}'}`;
console.log(query);

MongoClient.connect(url,{ useNewUrlParser: true },(err, client) => {
    if (err){
      return console.log('Unable to login to Mongo DB');
    }
    const db = client.db('test'); 
 db.collection('updateTest').find(query).toArray()
.then((result) =>{
    if(err){
        return console.log(err);
    }if(result.length > 0){
        console.log(JSON.stringify(result));
    }else{
        console.log(JSON.stringify({Error:Cannot find request}));
    }
});
client.close();
});

Lorsque j'utilise l'état directement dans la découverte ({ « December.12.temp »: temp}) il fonctionne très bien

Quand je cède la condition à une variable et l'utiliser dans find (requête), il fonctionne très bien.

var query = {December.12.temp:temp};

Mais quand j'attribue une valeur d'entrée par l'utilisateur la requête ne fonctionne pas comme prévu fonctionne plutôt comme si aucune condition n'a été spécifié.

var query = `{'${b}.${c}.temp':'${temp}'}`;
Créé 20/10/2018 à 03:40
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

var a = "2018";
var b = "December";
var c = "12";
var temp = "17";
var query = {};

var value = '${b}.${c}.temp';

query[value] = temp;

db.collection('updateTest').find(query).toArray()
.then((result) =>{
    if(err){
       return console.log(err);
    }if(result.length > 0){
        console.log(JSON.stringify(result));
    }else{
        console.log(JSON.stringify({Error:"Cannot find request"}));
    }

}
Créé 20/10/2018 à 09:46
source utilisateur

voix
0

Lorsque vous utilisez des guillemets inversés ( ``), variable de requête devient une chaîne, après tout le code JavaScript noyé dans la masse a exécuté ( par exemple en utilisant les valeurs de b et c). Vous avez besoin en fait la variable de requête pour être un objet, pas une chaîne. Ainsi , il échoue. Jetez un oeil à ce document Ps: Je fini par répondre dans les commentaires aussi.

Créé 20/10/2018 à 03:47
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more