请帮助我找到我的代码中的错误
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}'}`;
答案 0 :(得分:0)
当您使用反引号(``)时,查询变量变成字符串,执行完嵌入其中的所有JavaScript后(即使用b和c的值)。实际上,您要求查询变量是一个对象,而不是字符串。因此它失败了。 看看这个doc 附言:我最终也发表了评论。
答案 1 :(得分: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"}));
}
}