无法使用函数(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)?

无法从 mongoDB 中删除数据

TypeError: Object function (req, res, next) { app.handle(req, res, next); } has no method 'confi

如何在单个快速路由 User.route('/').get((req,res,next)=> ) 上添加两个身份验证?

uploadify无法获取服务器响应数据