【问题标题】:show data from 2 collections on single page with mongoose node.js使用 mongoose node.js 在单个页面上显示来自 2 个集合的数据
【发布时间】:2017-05-03 20:15:33
【问题描述】:

我目前有一个个人资料页面,其中显示了我数据库中“产品”集合中的产品。我还想在页面上显示一个表格,其中包含我数据库中“付款”集合的结果,但我不确定如何合并查询?

产品查询:

app.get('/profile', function(req, res){
Products.find({'username': req.user.username}).sort('-date').exec(function(err, docs){

    res.render('profile', { title: 'Your Products',
    products: docs,
    firstname:req.user.firstName,
    lastname:req.user.lastName,
    email:req.user.email,
    username:req.user.username,
  });

});

});

付款查询:

 app.get('/profile', function(req, res){
    Payments.find({'paidby': req.user.username}).sort('-date').exec(function(err, docs){
        res.render('profile', {payment: docs});

    });
    });

如何将其中两个查询同时加载到我的个人资料页面中?

【问题讨论】:

    标签: node.js database mongoose


    【解决方案1】:

    对此类问题使用 Promise。 首先,您必须配置 mongoose 以使用本机承诺:

    mongoose.Promise = global.Promise;
    

    在启动时执行此操作。 完成此操作后,您可以执行以下操作:

    var paymentPromise = Payments.find({ 'paidby': req.user.username }).sort('-date').exec();
    var productPromise = Products.find({ 'username': req.user.username }).sort('-date').exec();
    
    Promise.all([paymentPromise, productPromise]).then(
        docs => {
            let paymentDocs = docs[0];
            let productDocs = docs[1];
    
            res.render('profile', {
                title: 'Your Products',
                products: productDoc,
                payment: paymentDocs,
                firstname: req.user.firstName,
                lastname: req.user.lastName,
                email: req.user.email,
                username: req.user.username,
            });
        }
    );
    

    【讨论】:

      猜你喜欢
      • 2021-08-02
      • 2018-03-15
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 2021-07-30
      • 2016-10-09
      • 1970-01-01
      相关资源
      最近更新 更多