我有一个简单的函数,可以从 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/