【问题标题】:How to get items of only activated user如何获取仅激活用户的项目
【发布时间】:2021-09-20 14:55:28
【问题描述】:

我有两个型号 usersitems。我只想显示激活用户的项目。这样当用户停用他们的帐户时,他们的物品就不会被退回。

users.js

import mongoose from 'mongoose';

const userSchema = new mongoose.Schema({
  firstname: String,
  lastname: String,
  isDeactivated: Boolean,
});

export default mongoose.model('User', userSchema);

items.js

const itemSchema = new mongoose.Schema({
  name: String,
  user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
});

export default mongoose.model('Item', itemSchema);

所以,当我运行查询Item.find({}) 时,我只想返回激活用户的项目。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    好的,这将是一个棘手的问题,但让我们看看。

    Item.find().populate('user').execPopulate()
    .then(item => {
      // Will return list of item and respective user details
      const itemWithUserDetails = item.map(data => {
          return {
            userId: {
               ...data.user._doc
            }
            name: data.name
          }   
      })
      console.log(itemWithUserDetails)
      // Will return list of item and respective user details of activated users
      const filteredUserItem= itemWithUserDetails.filter(user => {
        return user.userId.isDeactivated !== false
      })
      console.log(filteredUserItem)
    }).catch(err => {
      console.log(err)
    })
    

    我还没有测试过代码,但它可能会工作

    【讨论】:

      【解决方案2】:

      您应该尝试以下查询

       const activatedUserInfo =    (await Item.find().pupulate("user")).map(item=>item.user.isDeactivated !== false)
      

      【讨论】:

        猜你喜欢
        • 2015-01-24
        • 1970-01-01
        • 2019-02-04
        • 1970-01-01
        • 1970-01-01
        • 2012-11-17
        • 2017-02-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多