re-frame/docs/FAQs/Inspecting-app-db.md

71 lines
2.2 KiB
Markdown
Raw Normal View History

2016-08-29 13:06:41 +00:00
### Question
2016-08-29 12:57:35 +00:00
How can I inspect the contents of `app-db`? Perhaps from figwheel.
2016-08-29 13:06:41 +00:00
### Short Answer
2016-08-29 12:57:35 +00:00
If at a REPL, inspect: `re-frame.db/app-db`.
If at the js console, that's `window.re_frame.db.app_db.state`.
You are [using clj-devtools](https://github.com/binaryage/cljs-devtools), right?
If not, stop everything and immediately make that happen.
2016-08-29 13:06:41 +00:00
### Better Answer
2016-08-29 12:57:35 +00:00
Are you sure you need to?
2016-08-29 12:57:35 +00:00
First, you seldom want to inspect all of `app-db`.
And, second, inspecting via figwheel will be clumsy.
Instead, you probably want to inspect a part of `app-db`. __And__ you probably want
to inspect it directly in the GUI itself, not off in a REPL.
2016-08-29 12:57:35 +00:00
Here is a useful technique from @escherize. Add something like this to
the hiccup of your view ...
```clj
[:pre (with-out-str (pprint @interesting))]
```
This assumes that `@interesting` is the value (ratom or subscription)
you want to observe (note the @ in front).
2016-08-29 12:57:35 +00:00
`pprint` output is nice to read, but not compact. For a more compact view, do this:
```clj
[:pre (pr-str @some-atom)] ;; NB: using pr-str instead of pprint
2016-08-29 12:57:35 +00:00
```
If you choose to use `pprint` then you'll need to `require` it within the `ns` of your `view.cljs`:
2016-08-29 12:57:35 +00:00
```clj
[cljs.pprint :refer [pprint]]
```
Finally, combining the short and long answers, you could even do this:
```clj
[:pre (with-out-str (pprint @re-frame.db/app-db))] ;; see everything!
```
or
```clj
[:pre (with-out-str (pprint (:part @re-frame.db/app-db)))] ;; see a part of it!
```
You definitely have [clj-devtools](https://github.com/binaryage/cljs-devtools) installed now, right?
### Other Inspection Tools
@yogthos' [json-html library](https://github.com/yogthos/json-html) provides
a slick presentation, at the expense of more screen real estate, and the
need to include specific CSS.
There's also [Data Frisk](https://github.com/Odinodin/data-frisk-reagent) which
provides a very nice solution for navigating and inspecting any data structure.
2016-08-29 12:57:35 +00:00
***
2016-08-29 12:57:35 +00:00
Up: [FAQ Index](README.md)      
2016-12-18 12:42:45 +00:00
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
<!-- END doctoc generated TOC please keep comment here to allow auto update -->