Я пытаюсь использовать обещания, чтобы избежать глубоких вложенных обратных вызовов. У меня такой код:
exports.destroy = function(req, res) {
var actionID = req.body.id;
var promise = Action.findById(actionID).exec();
promise.then(function (action) {
return Action.remove({'_id': action.id}).exec();
}).then(function (count, action, something) {
debugger;
});
};
Моя схема действия документа содержит массив ObjectID, ссылающихся на дочерние действия:
var ActionSchema = new Schema({
title: String, // Text to be shown when creating new action
description: String, // Description if any
children: { type: [Schema.Types.ObjectId], default: [] }, // JSON.stringified list of children
nest_level: Number, // how nested we are for children level
});
Что я пытаюсь сделать, так это удалить документ действия, когда это будет сделано и успешно, найдите все документы действий, связанные с удаленным действием (через дочернее поле), и удалите ObjectID удаленного действия из массива «потомков».
В разделе отладчика count возвращает количество удаленных документов, действие кажется пустой строкой, и больше ничего не возвращается (переменная «something» не определена).
У меня два вопроса:
- Как мне выполнить или отклонить обещание в обещании мангуста? В Интернете не так много информации, которой можно было бы следовать (обычно это общий учебник по обещаниям).
- Если Action.remove (). Exec () не возвращает копию удаленного документа, как мне выполнить другой запрос, чтобы действительно обновить другие документы?