无法使用函数(req,res,next,id)mongoose(mongodb)中的动态id字段进行查询
Posted
技术标签:
【中文标题】无法使用函数(req,res,next,id)mongoose(mongodb)中的动态id字段进行查询【英文标题】:Unable to query using the dynamic id field in function(req, res, next, id) mongoose ( mongodb ) 【发布时间】:2017-06-13 20:47:39 【问题描述】:我正在使用平均 js,我正在尝试通过 angularjs 中的服务调用来查询 mongodb,
var Priority = 'Left_VM_P';
url = currentUrl+"/api/queryPrioritySearch/"+Priority;
查询仅在以下情况下有效
Property.find( Left_VM_P : true ).exec(function(err, properties)
当我尝试用 id 的值替换变量 Left_VM_P 时,它没有响应。
exports.queryPrioritySearch = function(req, res, next, id)
console.log('id = ', id);
Property.find( id : true ).exec(function(err, properties)
在控制台记录时 id 的值为
id = Left_VM_P
这是示例 mongo 对象。
"Left_VM_P": true,
"Later_P": true,
"High_P": true,
"last_date_call_was_made": "-",
"call_priority": "-"
当我在 mongo shell 中搜索时,它也会正确返回值。
> db.properties.find("Left_VM_P" : true).count();
3
【问题讨论】:
【参考方案1】:我认为您不能将变量放在 mongodb 查询的左侧。 mongodb 始终将左侧视为字段名称作为字符串。所以
Property.find( Left_VM_P : true ).exec(function(err, properties)
会起作用,因为它将 left_VM_P 视为字符串,所以它就像"Left_VM_P": true
如果是Property.find( id : true )
,它会将其作为字符串"id":true
但您想要动态名称代替 id,因此您可以尝试此解决方案
var dynamicId=;
dynamicId[id]=true;
Property.find(dynamicId).exec(function(err, properties)
我希望这会有所帮助:)
这是完整版:
exports.queryPrioritySearch = function(req, res, next, id)
var id_2 = id;
var dynamicId=;
dynamicId[id_2]=true;
Property.find(dynamicId).exec(function(err, properties)
【讨论】:
以上是关于无法使用函数(req,res,next,id)mongoose(mongodb)中的动态id字段进行查询的主要内容,如果未能解决你的问题,请参考以下文章
Passport.authenticate 导出-> passport.authenticate(一些东西)(req,res,next)?
TypeError: Object function (req, res, next) { app.handle(req, res, next); } has no method 'confi