例:
type person = { name : string
; age : int
}
db /person : intmap(person)
データベースから 1 人の人物を取得する方法は知っていますが、全員を取得するにはどうすればよいですか? それらをhtmlテーブルに印刷しますか?
どうも。
例:
type person = { name : string
; age : int
}
db /person : intmap(person)
データベースから 1 人の人物を取得する方法は知っていますが、全員を取得するにはどうすればよいですか? それらをhtmlテーブルに印刷しますか?
どうも。
これはそれを行う必要があります:
my_html_list() =
List.map(
person -> <li>{person.name}</li>,
IntMap.To.val_list(/person)
)
render() = <ul>{my_html_list()}</ul>
...次に、サーバーページでrender()を呼び出します...
簡単に言えば:
InMap.fold の代わりに Db.intmap_fold_range を使用することをお勧めします。折りたたむ前に OPA ですべてのマップを構築する必要がある InMap.fold よりも高速です。
http://opalang.org/resources/doc/index.html#db.opa.html/!/value_stdlib.core.db.Db.intmap_fold_range
あなたのタイプの例を次に示します。
type person = { name : string
; age : int
}
db /person : intmap(person)
add(name, age) =
/person[age] <- { ~name; ~age }
fold_person(acc, id) =
person = /person[id]
<>{acc}</><li>{person.name} {person.age}</li>
start() =
do add("name1", 1)
do add("name2", 2)
do add("name3", 3)
Db.intmap_fold_range(
@/person,
fold_person,
<></>, 0, none, /* acc, starting key, optional max */
(_ -> true) /* check range */
)
server = one_page_server("Hello", start)
私の答えに対する@shomodjのコメントに続いて、これは人物リストを印刷するための私の完全なコードです(Cédricsコードに触発されました)
// Declare type person
type person = {
name : string
age : int
}
// Declare database
db /person : intmap(person)
// Add function
add(name, age) =
/person[age] <- { ~name ~age }
// Add to database when server launches
do add("name1", 1)
do add("name2", 2)
do add("name3", 3)
// Build the persons <li> list
my_html_list() =
List.map(
person -> <li>{person.name}</li>,
IntMap.To.val_list(/person)
)
// Build the complete html list (with ul)
render() = <ul>{my_html_list()}</ul>
// Create the server
server = one_page_server("Hello", render)