簡體   English   中英

Node.js Mongo DB查找查詢未按預期工作

[英]Node.js Mongo DB find query doesn't work as expected

請幫助我在我的代碼中發現錯誤

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();
});

當我直接在find({“ December.12.temp”:temp})中使用條件時,它可以正常工作

當我將條件分配給變量並在find(query)中使用它時,它可以正常工作。

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

但是,當我從用戶輸入中分配值時,查詢無法按預期運行,而是像未指定條件那樣運行。

var query = `{'${b}.${c}.temp':'${temp}'}`;

當您使用反引號(``)時,查詢變量變成字符串,執行完嵌入其中的所有JavaScript后(即使用b和c的值)。 實際上,您要求查詢變量是一個對象,而不是字符串。 因此它失敗了。 看看這個文檔 Ps:我最終也發表了評論。

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"}));
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM