【问题标题】:angular push adds operator that that results in MongoError角推添加导致 MongoError 的运算符
【发布时间】:2015-02-24 05:15:20
【问题描述】:

我正在平均堆栈上实现教程https://www.youtube.com/watch?v=AEE7DY2AYvI

我正在添加删除功能,以便在单击按钮时从数据库中删除项目

我的客户端控制器有以下 2 个函数可以添加到 db 和删除

$scope.createMeetup = function() {
    var meetup = new Meetup();
    meetup.name = $scope.meetupName;
    meetup.$save(function (result) {
        $scope.meetups.push(result);
        $scope.meetupName = '';
    });
}

$scope.deleteMeetup = function() {
    item = $scope.meetups[0];
    console.log("deleting meetup: " + item["name"]);
    Meetup.delete(item);
    scope.meetups.shift();
}

我的服务器端有以下代码

module.exports.create = function (req, res) {
    var meetup = new Meetup(req.body);
    meetup.save(function (err, result) {
        res.json(result);
    });
}

module.exports.remove = function(req, res) {
    console.log("GOING TO REMOVE!!!");
    console.log(req.query);

    item = req.query;
    Meetup.remove(item, function (err, results) {
        console.log("done");
        console.log(err);
        console.log(results);
    });
}

当我运行我的代码并删除列表中已加载的项目时,它会从 Mongodb 中删除就好了。但是,如果我将一个项目添加到列表中并且我不刷新页面,则会导致我的服务器出现错误,显示为

    GOING TO REMOVE!!!
    { '$resolved': 'true',
      __v: '0',
      _id: '54ec04e70398fab504085178',
      name: 'j' }
    done
    { [MongoError: unknown top level operator: $resolved]
      name: 'MongoError',
      code: 2,
      err: 'unknown top level operator: $resolved' }
    null

如果我刷新页面,它会被删除。但是如果我添加了条目,angular 似乎正在添加一个新变量 $resolved。为什么会这样?

还有另一个问题,调用删除的正确方法是什么?我现在打电话给它,但我无法进行回调。我想要一个返回的回调,然后我移动项目列表。我尝试添加一个回调,但代码从未到达它。 即我尝试了以下

        /*
        Meetup.delete(item, function () {
                console.log("In callback!!");
                console.log(returnValue);
                console.log(responseHeaders);
                $scope.meetups.splice(item);
            });
        */
        /*Meetup.delete(item, 
            function (returnValue, responseHeaders) {
                console.log("In callback!!");
                console.log(returnValue);
                console.log(responseHeaders);
                $scope.meetups.splice(item);
            },
            function (httpResponse){
                // error handling here
                console.log("Need to handle errors");
            });
        */

我对节点很陌生,很困惑。任何帮助都非常非常感谢

【问题讨论】:

    标签: javascript angularjs node.js mongodb meanjs


    【解决方案1】:

    看起来可以调用item.delete 而不是Meetup.delete(item)。您可以在模型实例上调用相同的方法。它防止向服务器发送角度属性。

    但是最好用delete方法做一个rest API

    删除 /meetups/:id

    只发送一个_id

    Meetup.remove({id: item._id});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-28
      • 2018-10-09
      • 2011-06-12
      • 2020-12-20
      • 2015-10-15
      • 2015-03-11
      • 2017-12-17
      • 2014-09-16
      相关资源
      最近更新 更多