You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
At the moment middleware is executed in the order that it is registered.
This is fine if middleware is only registered in a single place, but in
distributed setups, there may be multiple places in code (possibly
across repos) that consumers may want to register middleware.
In order to allow some distributed way of defining an execution order
of middlewares, this is a non-breaking change that lets consumers define
an `order` for their middleware when registering:
```js
backend.use('commit', fn, 10);
```
This `order` will be used to sort the middlewares, such that higher
`order` execute after middleware with lower `order`. Ties are broken on
registration order (the current behaviour), since JavaScript's `.sort()`
[is stable][1].
The default value for `order` is `0`, so if consumers want to run
middleware before other middleware that has not specified an `order`,
they will need to set a negative `order` (which is legal):
```js
backend.use('commit', fn, -10);
```
[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#sort_stability
> A [middleware]({{ site.baseurl }}{% link middleware/index.md %}) function
253
253
254
+
`order` -- number
255
+
256
+
Optional
257
+
{: .label .label-grey }
258
+
259
+
> Default: `0`
260
+
261
+
> The order to run this middleware relative to other middlewares. Middleware with higher `order` will run later. Ties are broken on registration order.
262
+
254
263
### addProjection()
255
264
256
265
Defines a [projection]({{ site.baseurl }}{% link projections.md %}).
0 commit comments