如何获取类型F#中字段的ID



如何创建一个函数来搜索数据库并只返回类型的ID?

事实上,我有一个数据库,在那里我可以搜索一双。这对是一种类型,在F#中:

module Types = 
[<CLIMutable>]
type Pair = {
Id :int64
PairName : string
}

我的目标是创建一个函数,它只返回给定PairName的ID(int(的值。我已经有一个函数返回一个Pair,给定这个名称。

module Query = 
let GetSingleByName name = querySingleAsync<Types.Bird> {
script "SELECT * FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}

如何只返回整数?不是所有类型。配对?

let getIdByName name = querySingleAsync<int64> {
script "SELECT Id FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}

如果这不起作用,则必须提供querySingleAsync的定义。

或者:

let getIdByName name = async {
let! single = getSingleByName name
return single |> Option.map (fun pair -> pair.Id)
}

我找到的一个解决方案是:

let GetSingleByName name = querySingleAsync<Types.Pair> {
script "SELECT * FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}

let GetIdByName (name:string)  = match GetSingleByName name |> Async.RunSynchronously  with
| Some(pair)->  pair.Id
| None -> 0 |> int64 

相关内容

最新更新