Я довольно новичок в работе с MongoDB (или любой другой базой данных в этом отношении), и у меня есть ошибка в моем веб-приложении диспетчера расходов.
У меня есть несколько коллекций ( не коллекций MongoDB, я их так называю на веб-сайте), которые пользователь может удалить. После удаления коллекции из базы данных (и всех ссылок на эту коллекцию) я извлекаю все остальные коллекции.
Проблема в том, что сервер уже извлекает коллекции, прежде чем удаляется коллекция, которую предполагается удалить.
Это то, что появляется в моем терминале, когда я пытаюсь удалить коллекцию:
Mongoose: collections.findOne({ _id: ObjectId("5b3f5dc890a1702e96a8f59a") }, { fields: {} })
Mongoose: collections.findOne({ _id: ObjectId("5b3f5dc890a1702e96a8f59a") }, { fields: {} })
Mongoose: users.findOne({ _id: ObjectId("5b321af4b654523b93164187") }, { fields: {} })
Mongoose: collections.find({ user: ObjectId("5b321af4b654523b93164187") }, { fields: {} })
Mongoose: expenses.remove({ _collection: ObjectId("5b3f5dc890a1702e96a8f59a") }, {})
Mongoose: users.updateOne({ _id: ObjectId("5b321af4b654523b93164187") }, { '$pullAll': { collections: [ ObjectId("5b3f5dc890a1702e96a8f59a") ] }, '$inc': { __v: 1 } })
Mongoose: collections.remove({ _id: ObjectId("5b3f5dc890a1702e96a8f59a") }, {})
Я пытался выяснить, как ждать окончания крючка, но ничего не смог найти. Я даже не знаю, правильно ли это делать в моем случае, поэтому я решил спросить здесь.
Это мой крюк:
collectionSchema.pre('remove', async function(next) {
try {
let user = await User.findById(this.user);
user.collections.remove(this.id);
this.model('Expense').remove({ _collection: this.id }, next);
await user.save();
return next();
} catch(err) {
return next(err);
}
});