Я работаю в предположении, что вас огорчает то, что электронные письма видны в источниках, как и все остальные данные, которые вы отображаете, поэтому неудивительно, что они попадают на клиента.
Почему письма отправляются клиенту?Я думал, что пометка функции list_db
на стороне сервера решит эту проблему, но это не так, и, честно говоря, я не уверен, почему.Мне придется больше копать или пытаться спросить кого-то лучше информированного, чем я.Простой (хотя и не очень удовлетворительный) обходной путь заключается в создании функции, которая проецирует тип user
во что-то, что необходимо для рендеринга в браузере, и создании этого проецирования на сервере.Это может выглядеть примерно так:
@server users_data() =
(
StringMap.map(user -> {md5sum=user.md5sum; name=user.name; is_achy=user.is_achy}, /users)
|> StringMap.To.val_list
)
list_db()=
(
render_user(user) =
<tr>
<th>{user.name}</th>
<th><input type="checkbox" id=#{user.md5sum} onclick={_ -> is_achy(user.md5sum)}/></th>
</tr>
List.map(render_user, users_data())
)
Вы увидите, что теперь электронные письма не «просачиваются» в клиента.Я постараюсь придумать лучший ответ ...