我正在尝试让我的表数据与数据库数据保持同步。
关于数据更改:
$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。我希望现在更清楚了。
有没有人有想法?
答案 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)
});
}
});