我正在使用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);
});
};