Estoy usando mean js, estoy tratando de consultar mongodb a través de una llamada de servicio en angularjs,
var Priority = 'Left_VM_P'; url = currentUrl+"/api/queryPrioritySearch/"+Priority;la consulta solo funciona cuando
Property.find({ Left_VM_P : true }).exec(function(err, properties) {cuando trato de reemplazar la variable Left_VM_P con el valor de la identificación, no responde.
exports.queryPrioritySearch = function(req, res, next, id) { console.log('id = ', id); Property.find({ id : true }).exec(function(err, properties) {Al iniciar sesión en la consola, el valor de id llega a ser
id = Left_VM_PAquí está el objeto mongo de muestra.
{ "Left_VM_P": true, "Later_P": true, "High_P": true, "last_date_call_was_made": "-", "call_priority": "-" }Además, cuando busco en el shell mongo, devuelve el valor correctamente.
> db.properties.find({"Left_VM_P" : true}).count(); 3Creo que no puedes poner la variable en el lado izquierdo de la consulta mongodb. mongodb siempre considera el lado izquierdo como nombre de campo como cadena. asi que
Property.find({ Left_VM_P : true }).exec(function(err, properties) funcionará porque considera left_VM_P como una cadena, por lo que es como "Left_VM_P": true
en el caso de Property.find({ id : true }) lo toma como cadena "id":true
pero desea un nombre dinámico en lugar de una identificación para que pueda probar esta solución
var dynamicId={}; dynamicId[id]=true; Property.find(dynamicId).exec(function(err, properties)Espero que esto sea de ayuda :)
Aquí está la versión completa:
exports.queryPrioritySearch = function(req, res, next, id) { var id_2 = id; var dynamicId={}; dynamicId[id_2]=true; Property.find(dynamicId).exec(function(err, properties) {