Mongoose.find()参数化并没有找到任何东西

时间:2017-10-03 16:16:34

标签: javascript node.js mongodb mongoose

我有这个简单的函数,可以从mongoDB

Node执行两个查询
function getEstablecimientosParadas(req,res){
      let tipo=req.body.tipoParada;
      let id_esta=req.body.id_esta;

      let paradas ={
        paradasMetro:[],
        paradasCercanias:[],
        paradasBus:[]
      }

        console.log("id_esta_param:"+id_esta);
        var find1= EstablecimientosMetro.find();
        var find2= EstablecimientosCercanias.find({"id_establecimiento":id_esta});
        var find3= EstablecimientosBus.find({"id_establecimiento":id_esta});

        find1.exec((err,paradasM) => {
          if(err){
            console.log('Error en la peticion(Paradas metro)');
          }else{
            if(!paradasM){
              console.log('No hay paradas de metro');
            }else{
              paradas.paradasMetro=paradasM;
              console.log(paradasM);
            }
          }
        });

        find2.exec((err,paradasC) => {
          if(err){
            console.log('Error en la peticion(Paradas cercanias)');
          }else{
            if(!paradasC){
              console.log('No hay paradas de cercanias');
            }else{
              paradas.paradasCercanias=paradasC;
              console.log(paradasC);
            }
          }
        });

        find3.exec((err,paradasB) => {
          if(err){
            console.log('Error en la peticion(Paradas bus)');
          }else{
            if(!paradasB){
              console.log('No hay paradas de bus');
            }else{
              paradas.paradasBus=paradasB;
              console.log(paradasB);
            }
          }
        });

        Promise.all([
          find1,
          find2,
          find3
        ]).then((value) => {
          res.status(200).send({
            paradasResponse:paradas,
          });
        });

    }

console.log()告诉我的是:

id_esta_param:59b2a7c4fcaf252adc4416d4
59b2a7c4fcaf252adc4416d4
[ { _id: 59c9416bde59b020c0403b58,
    id_parada: 598c9be810ebd9a7a94433f5,
    id_establecimiento: 59b2a7c4fcaf252adc4416d4,
    id_seccion: 597f96f82769efbe7301f97b,
    orden: 4 },
  { _id: 59c9416bde59b020c0403b59,
    id_parada: 598c9be810ebd9a7a94433f7,
    id_establecimiento: 59b2a7c4fcaf252adc4416d4,
    id_seccion: 597f96f82769efbe7301f97b,
    orden: 4 } ]
[]
[]

Mi问题是我不明白为什么.find({"id_establecimiento":id_esta)在他们的收藏品上找不到任何东西,但是当我.find()没有参数时,它找到了一些东西,你可以看到{ {1}} params在请求参数和集合中的id_establecimiento字段中是相同的。

PD:另外两个馆藏有两个文件。

2 个答案:

答案 0 :(得分:1)

我认为您需要从字符串参数ObjectID创建id_esta。例如:

import {ObjectID} from 'mongodb';

// ...

const objID = ObjectID(id_esta)

并在您的查询中使用它,如下所示:

const query = EstablecimientosCercanias.find({'id_establecimiento': objID});

答案 1 :(得分:1)

var mongoose = require('mongoose');
 var ObjectId = mongoose.Types.ObjectId();

Var Id = new ObjectId(id_esta)

   EstablecimientosCercanias.find({"id_establecimiento":id})
.sort({id_esta_param:-1})
.populate()
.exec(function(err,ata){
    //do your code
    })