MEAN App - DB Collection更新后更新表

时间:2016-09-21 15:01:42

标签: javascript angularjs rest express mean-stack

我正在尝试让我的表数据与数据库数据保持同步。

关于数据更改:

    $scope.changeStatus = function($event,label,status){
    var target = $event.currentTarget;
    target = $(target).parents('tr').attr('id');
    $http({
        method: 'POST',
        url: '/update',
        params: {
            trgt : target,
            label : label,
            labelstatus : status,
            searchQuery : $scope.search  
        }
    })
    .success(function(data){
        console.log(data);
        $scope.events = data;
    })
    .error(
    function(error){
          console.log(error)
    });

}

然后:

app.post('/update', function(req,res){
    ImportCollection.findOne({ _id : req.query.trgt },function(err,doc){
        doc.label.label = req.query.labelname;
        doc.label.status = req.query.labelstatus;
        doc.save();
});

//直到这里一切工作都很精致

if(req.query.searchQuery){
ImportCollection.find({$or:[
    {'localizedData.0.title' : {'$regex': req.query.searchQuery, $options: 'i' }},
    {'licensor.name' : {'$regex': req.query.searchQuery, $options: 'i'}}
    ]})
    .exec(function(err, imports){
        if(err) throw err
        res.json(imports)
        })
    } else{
        ImportCollection.find({},function(err, imports){
            if(err) throw err
            res.json(imports)
            })

    }
});

但是应该更新表数据的响应总是一个请求。 所以当前Data = Live,我将其设置为QA并且没有任何反应。该表仍在显示Live。一旦我现在改变它,让我们说DENIED,表格显示QA。我希望现在更清楚了。

有没有人有想法?

1 个答案:

答案 0 :(得分:0)

将find()块作为回调函数传递给doc.save()方法,对我有用:

 doc.save(function(err){
          if (err) throw error

          var query = req.query.searchQuery;
          if(query) { 
              ImportCollection.find({$or:[
                     {'localizedData.0.title' : {'$regex': req.query.searchQuery, $options: 'i' }},
                     {'licensor.name' : {'$regex': req.query.searchQuery, $options: 'i'}}
                    ]}).exec(function(err, imports){
                  if(err) throw err
                  res.json(imports)
              });
          } else{
              ImportCollection.find({}).exec(function(err, imports){
                  if(err) throw err
                  res.json(imports)
              });
          }


      });