是否可以有条件地链接populate()方法调用?

问题描述 投票:0回答:1

我正在为我的应用创建数据库服务,但需要一些代码。人口众多。因此可以添加如下内容:

if (populateFriends) {
  .populate('friends')
}
if (populatePosts) {
  .populate('posts')
}

并添加结尾,它将自动将其添加到find()。populate('friends')。populate('posts');

因为现在我得到了这样的东西:

  Action.find({ completed: false, userRole: ROLES.ADMIN }, selection)
    .populate({
      path: 'tender',
      select: 'number description shipper carriers type',
      populate: {
        path: 'shipper',
        select: 'company firstName lastName',
        populate: {
          path: 'company',
          select: 'companyName'
        }
      }
    })
    .sort({ creationDate: -1 })
    .populate('additionalData.documentId'),
javascript mongoose mongoose-populate
1个回答
0
投票

构建一系列要填充的东西。您可以动态构建此数组,然后将其传递给Mongoose:

let toPopulate = [];

if (populateTenders) {
    toPopulate.push({
        path: 'tender',
        select: 'number description shipper carriers type',
        model: Tender
    });
}
if (populateShippers) {
    toPopulate.push({
        path: 'shipper',
        select: 'company firstName lastName',
        model : Shipper 
    })
}

myModel.find({})
    .populate(toPopulate) // Now you populate both Tenders and Shippers, conditionnaly
    .exec(...)
© www.soinside.com 2019 - 2024. All rights reserved.