猫鼬从对象数组中删除对象

时间:2019-02-08 20:30:17

标签: mongoose angularjs-ng-repeat mean-stack angular-promise mongoose-web-server

我正在使用MEAN(angularjs)堆栈为小型网站功能创建原始操作。出价是一个具有供应商密钥的对象,其中包含一系列对象,这些对象是供应商及其属性,例如:

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

当我尝试使用删除功能时,出现错误消息:MongooseError:回调必须是一个函数,为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的带有删除按钮的列表。如果要删除控制器,则将供应商对象传递给api。api到达模型这样就可以搜索并删除特定的供应商。我只是按名称搜索,因为名称不能重复。)

控制器摘要,以防万一有人好奇:

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

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

0 个答案:

没有答案