【发布时间】:2017-02-03 02:42:12
【问题描述】:
我创建了一个从数据库中提取数据的 Shiny 应用程序。我在 UI 部分有一些输入,在服务器部分有一些输出。
在服务器部分,我有一个反应函数,它使用一些输入构建查询,然后从数据库中提取数据,例如:
queriedData <- reactive({
query <- paste0(...,input$a,...);
return(db$find(query))
})
在输出槽中,我指的是使用中的数据
x <- queriedData()
我的问题是:
- 我相信只有在响应函数中引用的输入发生变化时才会轮询数据库。这是正确的吗?
- 因此,我认为调用此反应函数不会产生查询是否正确 - 即数据被缓存并提供缓存的数据?
- 对于不属于查询的输入,我假设对这些的更改不会导致新的数据库查询。这是正确的吗?
【问题讨论】:
-
相信您的理解是正确的。一种测试方法是在你的函数中加入一些
print()语句,看看什么时候触发。 -
我认为第一点有点不同,当它依赖的输入发生变化时,反应值会失效,但是当说一些使用反应的输出需要更新时,它会被重新评估。观察员按照您的第一点工作。