首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Suave和DotLiquid

Suave和DotLiquid
EN

Stack Overflow用户
提问于 2017-10-11 04:24:45
回答 1查看 99关注 0票数 2

为澄清而编辑

不知何故,这是可行的:

代码语言:javascript
复制
path "/" >=> warbler (fun _ -> OK (string DateTime.Now))

但这一次却没有:

代码语言:javascript
复制
let txnAccA =
    let sqlStr = "select JSON from Store.Txn"
    let result = Db.execute sqlStr Config.oConnStr
    match result with
    | Some a ->
        [for i in a do 
            let msg = JsonConvert.DeserializeObject<TxnAccA>(i)
            yield msg
            ]

    | _ ->
        List.empty<TxnAccA>

let txnAmtA =
    let sqlStr = "select JSON from Store.Amt"
    let result = Db.execute sqlStr Config.oConnStr
    match result with
    | Some a ->
        [for i in a do 
            let msg = JsonConvert.DeserializeObject<TxnAmtA>(i)
            yield msg
            ]

    | _ ->
        List.empty<TxnAmtA>

let result ()= {Acc= txnAccA; Amt= txnAmtA}
path "/txn" >=> warbler (fun _ -> page "txn.html" (result()))

我所说的“工作”是指页面不是静态的,它显示来自数据库的最新数据。知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-11 16:32:23

txnAccAtxnAmtA需要是函数(类似于result)。它们现在被定义为值,所以get只分配一次,不会查询每个请求的DB。每次调用时,result都会创建一个新记录,但是值始终保持不变。

代码语言:javascript
复制
let txnAccA () = //...

let txnAmtA () = //...

let result () = { Acc = txnAccA(); Amt = txnAmtA() }
path "/txn" >=> warbler (fun _ -> page "txn.html" (result()))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46679825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档