节点服务器端执行骨干删除命令,但前端未触发同步事件

Backbone delete command executes on the Node server but no sync event is fired on the frontend

本文关键字:前端 事件 同步 执行 服务器端 命令 删除 节点      更新时间:2023-09-26

从骨干同步发出删除命令后,我没有得到同步事件,虽然节点服务器执行命令并从MongoDB删除条目。这是前端(主干)的相关代码:

handleDeleteCar: function (carId) {
  Backbone.sync("delete", cars.get(carId), {url:'/api/cars/' + carId});
  cars.remove(cars.get(carId));
},

和后端(Node):

app.delete('/api/cars/:id', function (req, res) {
  var carImage = Car.findById(req.params.carId)._carImage;
  Car.remove({ _id : req.params.id } , function (err){
    if (!err){
      console.log("Cars deleted");
      Image.remove({_id:carImage},  function (err){
        if (!err)
          console.log("Image deleted");
        res.json({"status":"O.K."});
      });
    }
  });
});

正如我所说的一切都很好,除了我在浏览器中没有得到同步事件。我正在为我使用的每个其他动词(get, post和put)获取此事件。我尝试了从服务器返回不同的值,但无济于事。

你不应该使用Backbone。直接同步。正确的方法是将集合url设置为'/api/cars/',并调用model.destroy():

var Cars = Backbone.Collection.extend({
  url: '/api/cars/',
  /* ... */
});
/* ... */
handleDeleteCar: function (carId) {
  cars.get(carId).destroy()
}