Пакетные операции Постоянное удаление (циклическая зависимость) - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу добавить новую пакетную операцию там, где это происходит только в корзине, постоянное удаление должно выполняться без циклической зависимости. Но сначала давайте посмотрим на мои addBatchOperations:

  // In lib/modules/likes/index.js
   addBatchOperations : [
    {
        name : 'delete',
        label: 'Permanent Delete',
        unlessFilter: {
            trash: false
        }
    }
   ],

Теперь я создаю маршруты с супер шаблоном в нем. В конструкции:

var superRoutes = self.createRoutes;
self.createRoutes = function () {
    superRoutes();
    self.route('post', 'delete', self.routes.delete);
};

Затем я создаю новый BatchSimpleRoute:

self.routes.delete = function (req, res) {
    return self.batchSimpleRoute(req,'delete' , function (req, piece, data, callback) {
        console.log("req object?", req.body);
        console.log("Any Piece ?" , piece);
        return self.apos.docs.deleteFromTrash(req,callback);
    });
};

Затем в public/js/manager-modal.js переопределите, я сделал это:

// in lib/modules/likes/public/js/manager-modal.js
apos.define('apostrophe-pieces-manager-modal', {
    construct: function (self, options) {
        // calling from batchOperations {name : 'delete'} to self.batchDelete
        self.batchDelete = function () {
            return self.batchSimple(
                'delete',
                "Are you sure you want to delete " + self.choices.length + " items?", {}
            );
        };
    }
});

Выше кода показывает ошибку, которая запускает cyclic dependency detected error. Поэтому я провел онлайн-исследование и сказал, что его нужно проводить в одном документе вместо целого. Итак, я погрузился в апострофный код node_modules с self.routes.trash и нашел интересный код. Вот оно, я пытаюсь это реализовать, но оно не работает.

self.routes.delete = function (req, res) {
    return self.batchSimpleRoute(req,'delete' , function (req, piece, data, callback) {
        console.log("req object?", req.body);
        console.log("Any Piece ?" , piece);
        var ids;
        if (req.body.job) {
            // New way
            return self.apos.modules['apostrophe-jobs'].run(req, function (req, id, callback) {
                return one(id, callback);
            });
        }

        // bc and single id case

        if (Array.isArray(req.body.ids)) {
            ids = self.apos.launder.ids(req.body.ids);
        } else {
            ids = [self.apos.launder.id(req.body._id)];
        }

        function one(id , callback){
            return async.series({
                delete : function(callback){
                    return self.apos.docs.deleteFromTrash(req, id, callback);
                }
            }, function(err){
                return callback(err);
            })
        }
    });
};
...