我正在从C#Web API轮询数据到我的角度应用程序。每次对所有数据进行轮询时,即使许多数据都没有更改。我只想轮询实际上已经以任何方式更新的对象。
这是我在Controller.cs中的代码
options(stringsAsFactors = FALSE)
games <- data.frame(index = c(1,2,3), player = c('John', 'Sam', 'Mary'))
weather <- data.frame(index = c(1,2,3), temperature = c('hot', 'cold', 'rainy'))
list1 <- list(games = games, weather = weather)
games <- data.frame(index = c(1,2,3), player = c('AA', 'BB', 'CC'))
weather <- data.frame(index = c(1,2,3), temperature = c('cold', 'rainy', 'hot'))
cars <- data.frame(index = c(1,2,3), car = c('honda', 'toyota','bmw'))
list2 <- list(games = games, weather = weather, cars = cars)
library(purrr)
all_list <- list(list1, list2)
all_names <- all_list %>% map(names) %>% reduce(union)
list(list1, list2) %>%
# regroup named element together
transpose(.names = all_names) %>%
# bind the df together
map(dplyr::bind_rows)
#> $games
#> index player
#> 1 1 John
#> 2 2 Sam
#> 3 3 Mary
#> 4 1 AA
#> 5 2 BB
#> 6 3 CC
#>
#> $weather
#> index temperature
#> 1 1 hot
#> 2 2 cold
#> 3 3 rainy
#> 4 1 cold
#> 5 2 rainy
#> 6 3 hot
#>
#> $cars
#> index car
#> 1 1 honda
#> 2 2 toyota
#> 3 3 bmw
如您所见,我将数据转换为VehicleDetails,随后将其添加到我的VehicleDetails列表中。即时输入的数据为JSON格式。有没有一种方法可以将我的上次轮询与当前轮询进行比较,而无需深入数据库?如果可以,我该怎么办?
答案 0 :(得分:0)
我建议通过浏览器的本地存储或使用ngrx保存最后一个状态。
答案 1 :(得分:0)
在不知道this.fmsdb.Value.GetFleetStatusDetails();
做什么或数据库架构的情况下,您调用的最佳猜测答案是在API中创建两个端点。
第一个将使用this.fmsdb.Value.GetFleetStatusDetails();
获得完整的结果集。从端点下载数据后,将当前日期/时间存储在角度视图中,并将其传递给第二个端点...
第二个端点将获取自获取第一组数据的日期/时间以来已更改的记录。假设您正在存储更新的日期时间。
[HttpGet]
[Route("api/updateddetails")]
public object GetUpdatedFleetStatusDetails([FromUrl]DateTime date)
{
var fmsData = this.fmsdb.Value.GetUpdatedFleetStatusDetails(date);
return fmsData.Entries
.Where(x => x != null)
.Select(ConvertVehicleDetail);
}
如果知道this.fmsdb.Value.GetFleetStatusDetails()中的内容,可以提供更多详细信息
PS尚未测试此代码。