Я создаю свою схему и свою модель с помощью Mon goose, и мне нужно вернуть определенную c информацию на разные конечные точки в моем приложении, что-то вроде этого (упрощенный пример моего кода)
Это моя схема:
const userSchema = new mongoose.Schema({
idNumber: Number,
name: String,
lastName: String,
city: String,
age: Number
});
А это моя модель:
const User = mongoose.model('User', userSchema);
Теперь я хочу вернуть c информацию о моей модели, что-то вроде этого
router.get('/:id/getJustName', (req, res, next) => {
User.find({ idName: req.params.id }, (err, user) => {
//I want just return the property Name, without _id, __v, lastName, ...
})
});
router.get('/:id/getJustCity', (req, res, next) => {
User.find({ idName: req.params.id }, (err, user) => {
//I want just return the property City, without _id, __v, lastName, ...
})
});
Я знаю, что могу вернуть что-то вроде user.city
и сделать delete
для _id
, __v
и других свойств, которые мне не нужны, но мое приложение сильно увеличивается, и этот способ сделать это не обслуживается. Я гость, я могу сделать что-то вроде преобразования в другой схеме, но я нашел что-нибудь связанное с этим: (
Спасибо за помощь, я надолго застрял в этой проблеме.
----- Изменить 1 -----
Я попытался добавить собственное преобразование в определение схемы, но это не сработало: (
Я пробовал это:
const userSchema = new mongoose.Schema(/path/of/my/schema, {
toObject: {
transform: function (doc, ret) {
delete ret._id;
}
},
toJSON: {
transform: function (doc, ret) {
delete ret._id;
}
},
toReturnSpecificInfo: {
transform: function (doc, ret) {
delete ret._id;
delete ret.lastName;
}
}
});
Когда я звоню
User.find((err, users) => {
console.log(users[0].toJSON()); // This works
console.log(users[0].toReturnSpecificInfo()); // This is Not working
})