I'm looking to join a table to a polygon layer and I can't get the fields to transfer over. I'm sure there's something in my syntax that's messed up, but I can't figure out what it is. The goal of this process is to use a value from a field in the table to set the definition expression on the polygon layer (which I think I can do if the tables are joined?). It could be that I didn't create the workspaceId on the correct layer too... Or maybe I need to create a dynamic layer first? I'm utterly confused when it comes to dynamic layers.
This is what I currently have:
<SPAN class="comment token">//Join habitat management attributes to the habitat management polygon layer</SPAN>
<SPAN class="keyword token">var</SPAN> joinDataSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">JoinDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
joinDataSource<SPAN class="punctuation token">.</SPAN>joinType <SPAN class="operator token">=</SPAN> <SPAN class="string token">'left-inner-join'</SPAN><SPAN class="punctuation token">;</SPAN>
joinDataSource<SPAN class="punctuation token">.</SPAN>leftTableKey <SPAN class="operator token">=</SPAN> <SPAN class="string token">"HabitatManagement.dbo.MgmtTracts.MgmtTractID"</SPAN><SPAN class="punctuation token">;</SPAN>
joinDataSource<SPAN class="punctuation token">.</SPAN>rightTableKey <SPAN class="operator token">=</SPAN> <SPAN class="string token">"HabitatManagement.dbo.MgmtAttrb.MgmtTractID"</SPAN><SPAN class="punctuation token">;</SPAN>
leftTableSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">LayerMapSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">{</SPAN>
mapLayerId<SPAN class="punctuation token">:</SPAN> <SPAN class="number token">3</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> rightTableSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">LayerDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
rightTableSource<SPAN class="punctuation token">.</SPAN>dataSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">TableDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">{</SPAN>
workspaceId<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"hmgmtAttrb"</SPAN><SPAN class="punctuation token">,</SPAN>
dataSourceName<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"HabitatManagement.dbo.MgmtAttrb"</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
joinDataSource<SPAN class="punctuation token">.</SPAN>leftTableSource <SPAN class="operator token">=</SPAN> leftTableSource<SPAN class="punctuation token">;</SPAN>
joinDataSource<SPAN class="punctuation token">.</SPAN>rightTableSource <SPAN class="operator token">=</SPAN> rightTableSource<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> lyrDataSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">LayerDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
lyrDataSource<SPAN class="punctuation token">.</SPAN>dataSource <SPAN class="operator token">=</SPAN> joinDataSource<SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">//Add the habitat management tract feature layer</SPAN>
<SPAN class="keyword token">var</SPAN> hbMgmtTractFL <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">FeatureLayer</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"https://stuff_here/rest/services/HabitatMonitoring/HabitatData/MapServer/3"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">{</SPAN>
refreshInterval<SPAN class="punctuation token">:</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN>
visible<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">false</SPAN><SPAN class="punctuation token">,</SPAN>
source<SPAN class="punctuation token">:</SPAN> lyrDataSource<SPAN class="punctuation token">,</SPAN>
outFields<SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"*"</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
hbMgmtTractFL<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setMinScale</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">500000</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
hbMgmtTractFL<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setSelectionSymbol</SPAN><SPAN class="punctuation token">(</SPAN>selectionSym<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>The JS runs without errors in the console, and I can see the source comes through:

When I look at the fields though, I only see the fields of the polygon layer listed.
In my server manager, I've set up the workspaceId on a connection with the HabitatManagement geodatabase instead of the HabitatMonitoring geodatabase. The map service I've set up the workspaceId on resides in the HabitatMonitoring folder. Would that cause an issue? The "MgmtTracts" and "MgmtAttrb" layer (the layers to be joined) reside in my HabitatManagement geodatabase which is why I created the workspaceId using that connection.