08 Dynamic Preset Outputs
Turn a saved preset back into 64 live wires, automatically
- out_00
- out_01
- out_02
- out_03
- out_04
- out_05
- out_06
- out_07
- out_08
- out_09
- out_10
- out_11
- out_12
- out_13
- out_14
- out_15
- out_16
- out_17
- out_18
- out_19
- out_20
- out_21
- out_22
- out_23
- out_24
- out_25
- out_26
- out_27
- out_28
- out_29
- out_30
- out_31
- out_32
- out_33
- out_34
- out_35
- out_36
- out_37
- out_38
- out_39
- out_40
- out_41
- out_42
- out_43
- out_44
- out_45
- out_46
- out_47
- out_48
- out_49
- out_50
- out_51
- out_52
- out_53
- out_54
- out_55
- out_56
- out_57
- out_58
- out_59
- out_60
- out_61
- out_62
- out_63
This is the payoff node of the ZMongo preset system. The pitch behind "08 Presets" is that you stop hardcoding seeds, steps, samplers, and CFG values all over your graph and store them in the database instead. "08 Save Preset By Node ID" captures a target node's entire state, "08 Load Preset" retrieves it as JSON - and "08 Dynamic Preset Outputs" is what re-hydrates that JSON back into individual output sockets you can wire onto a fresh node. It's an automated pin factory: give it a preset, get out up to 64 typed-looking outputs named out_00 through out_63.
How it works
The single required input is preset_json - the tooltip says it plainly: "Preset JSON from ZMongo Load Preset." The node parses the preset's fields array and walks it in order, filling each out_XX socket with the corresponding field's value. A field that came from a slider lands in one output; a combo/dropdown value lands in another; each output is * (wildcard), so it can plug into whatever typed socket it's destined for.
The one toggle, strict_combo_validation (default true), is worth understanding: when on, dropdown values are validated against the saved option snapshot before being emitted. That catches the classic failure where a saved preset says "sampler: dpmpp_2m" but the target node's dropdown no longer offers that option (sampler lists change between ComfyUI versions all the time). Strict mode makes that mismatch loud instead of silently emitting a dead value. Flip it off if you'd rather take the raw value and let the target node cope.
This node is deliberately stateless - no session needed, no DB connection. It's pure JSON-in, sockets-out. The database work happened in Save/Load Preset; this is just the adapter that makes the loaded data usable on the canvas.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/CentralFloridaAttorney/ComfyUI-ZMongo
Restart ComfyUI, or install "ComfyUI-ZMongo" via ComfyUI Manager.
Where people get burned
The 64-output limit is real and fixed. A preset with more than 64 fields simply stops at out_63 - the rest of the fields are dropped silently. If you're saving a huge node's state and values mysteriously don't arrive, count your fields.
Second, ordering is positional, not by name. out_00 is the first field in the preset's fields array, not "the field named seed." If you rebuild a preset or save from a different node, the wiring can shift meaning even though every socket is connected. That's inherent to the dynamic-pin design, but it means: save from a stable target node and don't casually reorder inputs between saves.
Third, strict_combo_validation in the default on position will block values that no longer exist in a dropdown - which is exactly what you want until the day it blocks a legitimate value and you spend ten minutes wondering why the output is empty. If a formerly-working preset suddenly outputs nothing for a combo field, check whether your ComfyUI version changed that widget's options before you suspect the DB.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| preset_json | STRING | {} | Preset JSON from ZMongo Load Preset. |
| strict_combo_validation | BOOLEAN | true | Validate dropdown values against the saved option snapshot. |
Outputs (64)
| Name | Type | Description |
|---|---|---|
| out_00 | * | — |
| out_01 | * | — |
| out_02 | * | — |
| out_03 | * | — |
| out_04 | * | — |
| out_05 | * | — |
| out_06 | * | — |
| out_07 | * | — |
| out_08 | * | — |
| out_09 | * | — |
| out_10 | * | — |
| out_11 | * | — |
| out_12 | * | — |
| out_13 | * | — |
| out_14 | * | — |
| out_15 | * | — |
| out_16 | * | — |
| out_17 | * | — |
| out_18 | * | — |
| out_19 | * | — |
| out_20 | * | — |
| out_21 | * | — |
| out_22 | * | — |
| out_23 | * | — |
| out_24 | * | — |
| out_25 | * | — |
| out_26 | * | — |
| out_27 | * | — |
| out_28 | * | — |
| out_29 | * | — |
| out_30 | * | — |
| out_31 | * | — |
| out_32 | * | — |
| out_33 | * | — |
| out_34 | * | — |
| out_35 | * | — |
| out_36 | * | — |
| out_37 | * | — |
| out_38 | * | — |
| out_39 | * | — |
| out_40 | * | — |
| out_41 | * | — |
| out_42 | * | — |
| out_43 | * | — |
| out_44 | * | — |
| out_45 | * | — |
| out_46 | * | — |
| out_47 | * | — |
| out_48 | * | — |
| out_49 | * | — |
| out_50 | * | — |
| out_51 | * | — |
| out_52 | * | — |
| out_53 | * | — |
| out_54 | * | — |
| out_55 | * | — |
| out_56 | * | — |
| out_57 | * | — |
| out_58 | * | — |
| out_59 | * | — |
| out_60 | * | — |
| out_61 | * | — |
| out_62 | * | — |
| out_63 | * | — |