无法使用函数中的动态id字段进行查询(req,res,next,id)mongoose(mongodb)

时间:2017-01-28 04:34:14

标签: angularjs mongodb mongoose mongodb-query mean-stack

我使用卑鄙的js,我试图通过angularjs中的服务调用来查询mongodb,

   var Priority = 'Left_VM_P'; 
   url = currentUrl+"/api/queryPrioritySearch/"+Priority;

查询仅在

时有效
Property.find({ Left_VM_P : true }).exec(function(err, properties) {  

当我尝试将变量Left_VM_P替换为id的值时,它没有响应。

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 个答案:

答案 0 :(得分: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) {