【问题标题】:How to exclude an fields from populated query data? [duplicate]如何从填充的查询数据中排除字段? [复制]
【发布时间】:2020-09-03 19:21:49
【问题描述】:

我只是不想在讨论数组中传递用户 ID。

现在我像这样从这条路线回来。

{
    "_id": "5f4600ab7ec81f6c20f8608d",
    "name": "2",
    "category": "2",
    "description": "2",
    "deadline": "2020-08-10",
    "discussion": [
        {
            "date": "2020-09-03T06:12:15.881Z",
            "_id": "5f5089bd265ec85b896f8491",
            "user": {
                "_id": "5f5089a2265ec85b896f848f",
                "userName": "MdJahidHasan01"
            },
            "text": "3"
        },
        {
            "date": "2020-09-03T06:12:15.881Z",
            "_id": "5f5089ae265ec85b896f8490",
            "user": {
                "_id": "5f5089a2265ec85b896f848f",
                "userName": "MdJahidHasan01"
            },
            "text": "2"
        }
    ]
}

但我想变成这样

{
    "_id": "5f4600ab7ec81f6c20f8608d",
    "name": "2",
    "category": "2",
    "description": "2",
    "deadline": "2020-08-10",
    "discussion": [
        {
            "date": "2020-09-03T06:12:15.881Z",
            "_id": "5f5089bd265ec85b896f8491",
            "user": {
                "userName": "MdJahidHasan01"
            },
            "text": "3"
        },
        {
            "date": "2020-09-03T06:12:15.881Z",
            "_id": "5f5089ae265ec85b896f8490",
            "user": {
                "userName": "MdJahidHasan01"
            },
            "text": "2"
        }
    ]
}

选择在这里不起作用。我只是不想在讨论数组中传递用户 ID 只是用户名。 因为我使用用户 ID 进行授权。所以发送用户ID不是一个好主意。

项目模型

const mongoose = require('mongoose');

const projectSchema = new mongoose.Schema({
    name: {
        type: String,
        require: true
    },
    category: {
        type: String,
        require: true
    },
    description: {
        type: String,
        require: true
    },
    deadline: {
        type: String,
        require: true
    },
    discussion: [
        {
            user: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'User'
            },
            date: {
                type: Date,
                default: Date.now()
            },
            text: {
                type: String,
                require: true
            }
        }
    ]
});

module.exports = mongoose.model('Project', projectSchema);

项目详情路线

router.get('/:projectId',async (req, res) => {
    try {
        const project = await Project.findById(req.params.projectId)
            .populate('discussion.user', 'userName')
            .select('-discussion.user._id')
        console.log(project);
        await res.status(200).json(project);
    } catch (error) {
        console.log(error);
        return res.status(400).json({ 'error': 'Server Error' });
    }
})

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    只需在.populate 后面添加这个:

    delete project.discussion._id
    

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 2019-02-08
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 2013-11-03
      • 2013-07-06
      • 2018-10-01
      相关资源
      最近更新 更多