Мангуст удаляет объект из массива объектов - PullRequest
0 голосов
/ 08 февраля 2019

Я создаю операции crud для функции небольшого веб-сайта, используя стек MEAN (angularjs).Ставка представляет собой объект с ключом Vendor, который содержит массив объектов, являющихся поставщиками, и их атрибуты, например:

"Vendor" : [
{name: ted,
age: 12}
]

Когда я пытаюсь использовать функцию удаления, я получаю сообщение об ошибке: MongooseError: Callbackдолжен быть функцией, получил значение true.

служба на стороне клиента:

function removeBidMeta(V, bidId) {
            console.log('client api');
            var url = "/api/remove-bid-meta/" + bidId;
            return $http.put(url, V)
                .then(function (response) {
                    return response.data;
                });
        }

служба на стороне сервера:

function removeBidMeta(req, res) {
    console.log("server side service");
    var VendorToRemove = req.body; //vendor to remove is a specific vendor
    console.log(VendorToRemove);
    bidModel
        .removeVendor(VendorToRemove, req.params.bidId)
        .then(function (VendorToRemove) {
            console.log(VendorToRemove);
            res.send(VendorToRemove);
        }, function (err) {
            console.log("error");
            res.send(err);
        });
}

модель:

    function removeVendor(VendorToRemove, bidId) {
    return(
    bidModel.findOneAndUpdate(
        { "_id": bidId },
        { "$pull": { "Vendor": {"vName": VendorToRemove.vName, } } },
        {multi: true}
        )
    );
}

Застрял в этом, был бы признателен за любые рекомендации, а не только ответы.Спасибо, ребята.

(что он должен делать: страница с поставщиками отображается в DOM в виде списка с кнопками удаления с помощью ng-repeat. Если вы хотите удалить контроллер, передает объект vendor в API.API добирается до модели, так что конкретный поставщик ищется и удаляется. Я ищу только по имени, потому что имена не должны повторяться.)

фрагмент кода контроллера на тот случай, если кому-то будет интересно:

model.removeV = function(V) {
            var specificVendor = V;

            bidService.removeBidMeta(V, $routeParams.bidNumber)
                .then(function (V) {
                    $location.url('/view-bid/' + $routeParams.bidNumber);
                });
        };
...