f# - Suave 和 DotLiquid

标签 f# suave dotliquid

为了清晰起见进行了编辑

不知怎的,这有效:

path "/" >=> warbler (fun _ -> OK (string DateTime.Now))

但是这个没有:

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()))

我所说的“有效”是指该页面不是静态的,它显示数据库中的最新数据。知道为什么吗?

最佳答案

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

let txnAccA () = //...

let txnAmtA () = //...

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

关于f# - Suave 和 DotLiquid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46679825/

相关文章:

f# - 重定向似乎不适用于 Suave

f# - 示例 Suave.IO 无法在我的 F# 项目中编译

json - 使用 JSON.net 的 Dotliquid JSON 转换

shopify 我需要检查当前页面是否是集合页面而不是单个产品页面

static - 我可以多态访问静态方法吗?

f# - deepMacroExpandUntil 发生了什么

performance - 列表理解与 List.concat

events - 是否可以对 F# 事件使用成员而不是 let?

.net - 如何在 F# Suave 中路由/商店/类别/%s/品牌/%s?

json - 如何在 Liquid json 转换中使用 foreach 和追加字符串