У меня есть модель User, которая содержит массив клиентов.Я хочу удалить конкретного клиента на основе customer _id
.Из того, что я прочитал в документации Mongoose, я должен использовать Model.deleteOne
, чтобы удалить один документ.
Вот моя попытка
Схема пользователя (сокращена для краткости):
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
username: {
type: String,
default: ''
},
password: {
type: String,
default: '',
},
registerDate: {
type: Date,
default: Date.now()
},
customer: [{
name: {
type: String,
default: '',
},
email: {
type: String,
default: 'No email name found'
},
fleet: [{
unitNumber: {
type: String,
default: 'N/A',
}
}]
}]
});
module.exports = mongoose.model('User', UserSchema);
Вот взгляд на маршрут и контроллер:
const express = require('express');
const router = express.Router();
const customer_controller = require('../../controllers/customers');
router.delete('/customers/:custid', customer_controller.customer_remove);
module.exports = router;
И, наконец, контроллер:
exports.customer_remove = (req, res) => {
const { params } = req;
const { custid } = params;
User.deleteOne({ 'customer._id': custid }, (err) => {
if (err)
throw err;
else
console.log(custid, 'is deleted');
});
};
Из того, что я думал, User.deleteOne({ 'customer.id': custid })
найдет customer _id
, соответствующий custid
, который передается через req.params
.Когда я тестирую этот маршрут в Postman, он удаляет всю коллекцию User
, в которой находится клиент, а не просто удаляет клиента.Могу ли я получить толчок в правильном направлении?Я чувствую, что я рядом (или нет).