我使用卑鄙的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
答案 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) {