在 express API 中获取字符串以传递给 mongodb 查找函数
Fetch string in express API to pass into mongodb find function
我正在使用 express API js 连接 mongoDB。我试图将参数传递给 mongodb 的查找函数,当我将它作为硬编码值传递时,它可以正确获取数据,但是当我传递动态字符串值时,它不接受。请在下面找到代码以获得更清晰的想法,
-----API.JS-----
router.get('/external_sources_details_filtered',(req,res) =>{
connection((db) => {
let parameterValue = String( 'frequency.'+ req.query.frequency);
console.log(parameterValue);
var query1 = {parameterValue :{$exists:true}};
var query2 ={'frequency.Monthly':{$exists:true}};
console.log(query1);
console.log(query2);
var projection = {_id:0,sourceID:1,SourceName:1, Outstanding:1};
db.collection('external_sources').find(query2)
.project(projection).toArray()
.then((external_sources_details_filtered) => {
response.data = external_sources_details_filtered;
res.json(response);
})
})
})
console.log(query1) 的输出 = { parameterValue: { '$exists': true } }
console.log(query2) 的输出 = { 'frequency.Monthly': { '$exists': true } }
为什么即使在将 parameterValue 转换为字符串后,在 query1 中传递它时也没有获取 parameterValue?
解决方案:因为我使用 parameterValue 作为对象的键。如果你想使用变量,你应该尝试 {[parameterValue]: {$exists: true}}
.这是 ES6 的一项功能,您可以在此处阅读更多相关信息 http://wtfruby.com/javascript/2017/01/04/js-dynamic-attr-names.html
我正在使用 express API js 连接 mongoDB。我试图将参数传递给 mongodb 的查找函数,当我将它作为硬编码值传递时,它可以正确获取数据,但是当我传递动态字符串值时,它不接受。请在下面找到代码以获得更清晰的想法,
-----API.JS-----
router.get('/external_sources_details_filtered',(req,res) =>{
connection((db) => {
let parameterValue = String( 'frequency.'+ req.query.frequency);
console.log(parameterValue);
var query1 = {parameterValue :{$exists:true}};
var query2 ={'frequency.Monthly':{$exists:true}};
console.log(query1);
console.log(query2);
var projection = {_id:0,sourceID:1,SourceName:1, Outstanding:1};
db.collection('external_sources').find(query2)
.project(projection).toArray()
.then((external_sources_details_filtered) => {
response.data = external_sources_details_filtered;
res.json(response);
})
})
})
console.log(query1) 的输出 = { parameterValue: { '$exists': true } }
console.log(query2) 的输出 = { 'frequency.Monthly': { '$exists': true } }
为什么即使在将 parameterValue 转换为字符串后,在 query1 中传递它时也没有获取 parameterValue?
解决方案:因为我使用 parameterValue 作为对象的键。如果你想使用变量,你应该尝试 {[parameterValue]: {$exists: true}} .这是 ES6 的一项功能,您可以在此处阅读更多相关信息 http://wtfruby.com/javascript/2017/01/04/js-dynamic-attr-names.html