F# 如何通过打开文件来使用数据库从服务器向客户端发送和接收数据?

F# 如何通过打开文件来使用数据库从服务器向客户端发送和接收数据?,f#,f#-data,f#-3.0,websharper,F#,F# Data,F# 3.0,Websharper,我只想从客户端web端以字符串形式接收数据以更新数据库,但现在对我来说有点锁,所以首先使用System.IO.file将数据写入驱动器中的文件。WriteAllText@my-file.txt 我犯了那个错误 error FS9001: Method name not found in JavaScript compilation: (receive : System.Object -> unit) 你能告诉我哪里做错了并改正它吗 WebSharper的客户端可以调用本身在[]范围内或标

我只想从客户端web端以字符串形式接收数据以更新数据库,但现在对我来说有点锁,所以首先使用System.IO.file将数据写入驱动器中的文件。WriteAllText@my-file.txt

我犯了那个错误

error FS9001: Method name not found in JavaScript compilation: (receive : System.Object -> unit)
你能告诉我哪里做错了并改正它吗


WebSharper的客户端可以调用本身在[]范围内或标记为[]的方法进行远程调用。错误消息没有提到第二个选项,但这正是您在这里需要的,与示例函数DoSomething一样

您还需要使远程函数不通过obj而是通过字符串发送。远程函数参数是基于类型信息反序列化的,不能是obj。例如,在客户端代码中,使用Server.receive rvInput.Value。rvInput是一个无功变量,其值包含当前值

请注意,如果要向服务器返回值,则远程函数必须是异步函数。在这里,仅用于日志记录,返回的单元也可以工作,但是您无法在服务器上确定日志记录是否成功。通过返回async,如果希望防止连接或服务器错误,可以捕获客户机代码中的错误。同样,模板中的示例代码提供了一些指导。

以下是您的服务器端功能的外观:

[] 让接收输入:字符串= 异步的{ System.IO.File。WriteAllText@D:/myDatabase.txt,服务器接收数据:+input } 要从Client.fs调用它,您需要:

...
        button [
            on.click (fun _ _ ->
                async {
                    do! Server.Receive rvInput.Value
                } |> Async.Start
            )
        ] [text "Receive"]
...

我正在使一切尽可能简单,正如您在下面的代码中所看到的,但我仍然得到错误FS9001:Type未在JavaScript编译中找到:SampleWebsite.receiveYour module receive未标记为[]