我需要使用angular和mongodb更新文档。
更新功能(“vm.UpdateItem”)运行良好。
我的问题是如何在更新后刷新视图。
为此,我单击一个按钮并在“vm.UpdateItem()”中调用promise来更新文档。 当promise返回时,我可以检查返回的数据是否已更新。
之后,我使用“loadFilaLists”功能从服务器重新加载数据,但数据未显示更新。
如果我点击CTRL-F5,视图会重新加载并正确显示刚更新的数据。
我看不出错误在哪里,因为我正在使用来自承诺的“then”。
某些地方是否存在计时器问题。
是否可以更新mongodb文档并立即回读它,或者是否有一些“超时”限制来执行此操作?
一些帮助将不胜感激。
//标记
<button class="btn btn-sm btn-success" ng-click="vm.UpdateItem()">
<span>Update Item</span>
</button>
//服务
angular.module("clinang").service('dataService', ['$http','config', function ($http,config) {
this.postFilas = function (cond) {
return $http.post(urlBase + '/filas/all', cond)
};
this.getFilas = function (where) {
return $http.get(urlBase+'/filas',{params:{"where":where}});
};
this.getFila = function (id) {
return $http.get(urlBase + '/filas/' + id);
};
this.insertFila = function (tipo) {
return $http.post(urlBase+'/filas', tipo);
};
this.updateFila = function (tipo) {
return $http.post(urlBase + '/filas/' + tipo._id, tipo)
};
this.deleteFila = function (id) {
return $http.delete(urlBase+'/filas/' + id);
};
}]);
//控制器
var postFilas=function(checked, di, df){
var deferred=$q.defer()
var cond=checked?medId:undefined;
var obj={'profissional':cond, '$and':[
{'datahora_ent':{'$gte':di}},
{'datahora_ent':{'$lt': df}}
] };
dataService.postFilas(obj).then( (response)=>{
deferred.resolve(response.data)
})
.catch( (erro)=>{
deferred.reject('erro')
})
return deferred.promise
}
var loadFilaLists=function(checked){
var di=moment(vm.dateRange.date.startDate).clone().startOf('day').toDate();
var df=moment(vm.dateRange.date.endDate).clone().endOf('day').toDate();
postFilas(checked,di,df).then( (data)=>{
console.log('data2',data) //problem - data is showing old data, before the update
})
}
vm.UpdateItem=function(item){
dataService.updateFila(item).then( (response)=>{ //updated
console.log('data1',response.data) //data is updated and return ok
loadFilaLists(true); //trying refresh all data
}
}
loadFilaLists(true)
答案 0 :(得分:0)
我认为,您只需要在服务中添加this.postFilas = function (cond) {
return $http.post(urlBase + '/filas/all', cond).$promise;
};
,
In [4553]: [x.strftime('%m/%d/%Y') for x in panda_datelist]
Out[4553]: ['10/20/2017', '10/23/2017', '10/24/2017']