繁体   English   中英

带嵌套查询的Mongoose和mongoDB

[英]Mongoose & mongoDB with nested queries

我将在mongoDB中执行的查询传递给mongoose,这给了我错误。

mongo DB中的查询为:

db.facturas.find({
    _id: { 
        $in: db.detalles.distinct("id_factura", { 
            category: ObjectId("5889eae21ffcc6da2c6b4ae4")
        })
    }
})

在APP中,我建立查询如下:

Factura.find({'_id': { "$in" : Detalle.distinct("id_factura",{qrycat}) } })
        .populate('pto_venta')
        .populate('forma_pago')
        .exec(function(err, result) {
          if (err) res.send(err);
          res.json(result); 
        });

我在NODEJS中收到以下错误:

/var/nodejs/aadides-sgi/node_modules/express/lib/response.js:242 var body = JSON.stringify(val,replacer,space); ^

TypeError:在ServerResponse.send(/ var /)的ServerResponse.json(/var/nodejs/aadides-sgi/node_modules/express/lib/response.js:242:19)的Object.stringify(native)处将循环结构转换为JSON在/var/nodejs/aadides-sgi/app/handlers/facturasHandler.js:494:22处的/var/nodejs/aadides-sgi/nodejs/aadides-sgi/node_modules/express/lib/response.js:151:21) /node_modules/mongoose/lib/query.js:2176:21(位于/var/nodejs/aadides-sgi/node_modules/kareem/index.js:160:11(位于Query._find(/ var / nodejs / aadides-sgi / node_modules) /mongoose/lib/query.js:1019:5)位于/var/nodejs/aadides-sgi/node_modules/kareem/index.js:156:8位于/ var / nodejs / aadides-sgi / node_modules / kareem / index。在process._tickCallback(internal / process / next_tick.js:104:9)的_combinedTickCallback(internal / process / next_tick.js:73:7)的js:18:7 events.js:160 throw er; //未处理的“错误”事件^

错误:在export._errnoException(util.js:1018:11)处在Pipe.onread(net.js:568:26)处读取ECONNRESET

仔细检查您的第二个参数是否有distinct(),因为{qrycat}看起来不是有效的对象。

更重要的是, distinct()是异步的(就像大多数猫鼬操作一样),因此在调用下一个操作之前,您需要回调以获取ID。

Detalle.distinct("id_factura", {qrycat}, function (err, id_facturas) {
    if (err) 
        return res.send(err);
    // id_facturas should be an array
    Factura.find({'_id': { $in: id_facturas }})
        .populate('pto_venta forma_pago') // Mongoose >= 3.6
        .exec(function(err, result) {
            if (err) 
                return res.send(err); // don't forget the return
            res.json(result); 
        });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM