Javascript 如何在Node.js中使用MongoDB的populate方法?

Javascript 如何在Node.js中使用MongoDB的populate方法?,javascript,node.js,mongodb,api,express,Javascript,Node.js,Mongodb,Api,Express,我有以下代码: const Order = require('../../models/order'); const Product = require('../../models/product'); Order.find({}, '_id product quantity', function(err, result) { if (result) { const response = { count: result.length, createdOrde

我有以下代码:

const Order = require('../../models/order');
const Product = require('../../models/product');

Order.find({}, '_id product quantity', function(err, result) {
  if (result) {
    const response = {
      count: result.length,
      createdOrder: result.map(function(order) {
        return {
          _id: order._id,
          productId: order.product,
          quantity: order.quantity,
          request: {
            type: 'GET',
            url: 'http://localhost:3000/orders/' + order._id
          }
        }
      })
    };
    res.status(200).json(response);
  } else if (err) {
    console.log(err);
    res.status(404).json({
      error: err
    });
  }
});

如何使用populate方法以上述语法提供有关产品的更多信息?

在订单模式中,您应该设置一个参考:

const mongoose = require('mongoose');

const orderSchema = mongoose.Schema({
  // ...,
  product: { type: mongoose.Schema.Types.ObjectId, ref: 'Product' }

});

module.exports = mongoose.model('Order', orderSchema);
填充产品:

Order.find({})
     .populate('product')
     .exec()
     .then(document => {
       // handle the document...
     });

希望这有帮助

在订单模式中,您应该设置一个参考:

const mongoose = require('mongoose');

const orderSchema = mongoose.Schema({
  // ...,
  product: { type: mongoose.Schema.Types.ObjectId, ref: 'Product' }

});

module.exports = mongoose.model('Order', orderSchema);
Order.find({}, '_id product quantity', function (err, result) {

        if (result) {
            const response = {
                count: result.length,
                createdOrder: result.map(function (order) {
                    return {
                        _id: order._id,
                        productId: order.product,
                        quantity: order.quantity,
                        request: {
                            type: 'GET',
                            url: 'http://localhost:3000/orders/' + order._id
                        }
                    }

                })
            };

            res.status(200).json(response);
        }
        else if (err) {
            console.log(err);
            res.status(404).json(
                {
                    error: err
                });
        }
}).populate('product', '_id name price');
填充产品:

Order.find({})
     .populate('product')
     .exec()
     .then(document => {
       // handle the document...
     });
希望这有帮助

Order.find({}, '_id product quantity', function (err, result) {

        if (result) {
            const response = {
                count: result.length,
                createdOrder: result.map(function (order) {
                    return {
                        _id: order._id,
                        productId: order.product,
                        quantity: order.quantity,
                        request: {
                            type: 'GET',
                            url: 'http://localhost:3000/orders/' + order._id
                        }
                    }

                })
            };

            res.status(200).json(response);
        }
        else if (err) {
            console.log(err);
            res.status(404).json(
                {
                    error: err
                });
        }
}).populate('product', '_id name price');
populate方法可以在类似上面的javascript语法中使用

populate方法可以在类似上面的javascript语法中使用