gpt4 book ai didi

javascript - 填充子文档时忽略 toJSON 方法

转载 作者:行者123 更新时间:2023-12-05 05:49:50 25 4
gpt4 key购买 nike

我需要从 JSON 响应中删除某些字段。为此,我使用了 toJSON() 方法。这是我的模态方法的代码。

    User.methods.toJSON = function () {
let obj = this.toObject()

delete obj.resetPasswordToken
delete obj.resetPasswordExpire
delete obj.otp
delete obj.otpExpire
return obj
}

上面的代码工作正常,但是当我用我的媒体模型填充用户模式时,它不会删除我从 JSON 响应中删除的字段。

    const allMedia = await Media.find({}).populate({
path: 'uploadedBy', // this is the user document
})

这是我为使用媒体模型填充用户模型而编写的代码。但问题是用户填充了媒体,但它不会忽略我从 toJSON() 方法中删除的字段。

    {
"name": null,
"sizes": [],
"isPrivate": false,
"_id": "61d6d1a1fcaf7337f6f186de",
"path": "http://192.168.1.7:2121/uploads/2022/1/7b37e2bc-b313-4b08-abd6-101e99c36527.png",
"uploadedBy": {
"firstName": "abc",
"lastName": "abc",
"role": "ADMIN",
"resetPasswordToken": "77bda3f7794d305d7771fc23d932e1e9922df02c71b02c3564ad46b22ceac27e",
"resetPasswordExpire": "1640954443294",
"otp": null,
"otpExpire": null,
"_id": "61ceea9ce989f2d986fa9c5c",
"userName": "abc",
"email": "abc@gmail.com",
"createdAt": "2021-12-31T11:33:48.066Z",
"updatedAt": "2021-12-31T13:08:36.245Z"
},
"createdAt": "2022-01-06T11:25:21.839Z",
"updatedAt": "2022-01-06T11:25:21.839Z"
}

如果有人能提供帮助,我们将不胜感激。

提前致谢

最佳答案

您可以为 Media 架构的每个查询定义 pre Hook 。

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const schema = new Schema(...);

schema.pre('find', function () {
this.populate('uploadedBy');
this.select('-resetPasswordToken -resetPasswordExpire -otp -otpExpire');
});

您可以为其他查询添加新的 pre Hook ,就像为 find 一样。

您可以找到更多详细信息 here .

关于javascript - 填充子文档时忽略 toJSON 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70616348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com