我有这个简单的函数,可以从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:另外两个馆藏有两个文件。
答案 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
})