【问题标题】:Backbone Node put delete骨干节点放置删除
【发布时间】:2016-04-01 19:14:04
【问题描述】:

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

有人能看出什么问题吗?

非常感谢!

【问题讨论】:

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


    【解决方案1】:

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

    var id = new mongodb.ObjectId(req.params.id);
    
    var dog = req.body;
    delete( dog._id );
    

    还是谢谢!

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多