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

标签 javascript node.js mongodb mongoose

我有一个简单的函数,可以从 Node 执行两个对 mongoDB 的查询

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 } ]
[]
[]

我的问题是我不明白为什么 .find({"id_establecimiento":id_esta) 在他们的集合中找不到任何内容,但是当我执行 .find() 时 没有参数,它会找到所有东西,正如您所看到的,id_establecimiento 参数在请求参数和集合中的 id_establecimiento 字段中是相同的。

PD:另外两个集合有两个文档。

最佳答案

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

import {ObjectID} from 'mongodb';

// ...

const objID = ObjectID(id_esta)

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

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

关于javascript - Mongoose.find() 参数化没有找到任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46549111/

相关文章:

java - MongoDB 查询性能问题

javascript - 使用 vanilla javascript 回调和延迟加载 css

javascript - ASP.NET Core AzureBlob 下载并重命名的文件

javascript - 如何限制 jQuery UI slider 的范围?

javascript - 为什么 mapStateToProps 在状态发生变化时返回空对象?

javascript - Node.js 公共(public) css 文件 404 未找到

java - WritableServerSelector 没有从集群中选择服务器

node.js - 让 SASS 从特定文件(自动)编译到不同的文件夹中

node.js - 带有参数的 Jest Express 测试中间件

database - 蒙戈外壳 : is there a way to execute the javascript code remotely instead of doing work in the local machine?