【问题标题】:Is it possible to chain populate() method calls conditionally?是否可以有条件地链接 populate() 方法调用?
【发布时间】:2020-07-03 22:48:42
【问题描述】:

我正在为我的应用创建一个数据库服务,但只是为一些代码。有很多人口。 那么是否可以添加类似的内容:

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】:

    构建一系列要填充的东西。您可以动态构建此数组,然后将其传递给 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, conditionally
        .exec(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 2022-11-17
      • 2013-06-07
      • 2011-11-01
      • 1970-01-01
      • 2010-11-07
      相关资源
      最近更新 更多