Backbone Node放删除

时间:2016-04-01 19:14:04

标签: node.js mongodb express backbone.js put

我使用Backbone,Node,MongoDB和Express创建了这个应用程序来学习。 POST请求工作正常,但由于某种原因,PUT和DELETE请求发送的时间很长,而且它们似乎被拒绝了。我已经检查并重新检查,似乎没有任何错误,根据控制台,请求是我所期望的。

这是我的中间件代码,包括方法覆盖:

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(methodOverride()); //so we can receive DELETE requests

以下是分别处理PUT和DELETE的服务器函数:

router.put('/api/dogs/:id', function(req, res) {
    mongo.db()
        .collection('dogs')
        .update({_id: req.params.id}, req.body, function (err) {
            if (err) {throw err;}
        });
});

router.delete('/api/dogs/:id', function(req, res) {
  mongo.db()
    .collection('dogs')
    .remove({_id: req.params.id}, function (err) {
      if (err) {throw err;}
    });
});

分别发出PUT和DELETE请求的视图函数,以防万一:

close: function (ev) {
            var $input = $(ev.target);
            var value = $input.val().trim(); //we trim the value of the input
            var data = {};
            data[$input.attr('name')] = value;
            this.model.set(data);
            this.model.save();
        },

clear: function () {
            this.model.destroy();
        }

有人能看出什么问题吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我设法解决了自己的问题。如果有人想知道,需要做的是转换从req.params获取的id并转换为ObjectId,并从发送的项目中删除_id。

var id = new mongodb.ObjectId(req.params.id);

var dog = req.body;
delete( dog._id );

非常感谢!