Edit docs of bind option of getCurrentContext()
This commit is contained in:
parent
a7c4165a4e
commit
735fa3f64c
14
README.md
14
README.md
|
@ -62,16 +62,26 @@ This approach should be compatible with all process managers, including
|
||||||
`strong-pm`. However, we feel that relying on the order of `require` statements
|
`strong-pm`. However, we feel that relying on the order of `require` statements
|
||||||
is error-prone.
|
is error-prone.
|
||||||
|
|
||||||
### Re-bind for concurrency
|
### Bind for concurrency
|
||||||
|
|
||||||
In order to workaround the aforementioned concurrency issue with `when` (and
|
In order to workaround the aforementioned concurrency issue with `when` (and
|
||||||
similar `Promise`-like and other libraries implementing custom queues and/or
|
similar `Promise`-like and other libraries implementing custom queues and/or
|
||||||
connection pools), it's recommended to activate context re-binding inside each
|
connection pools), it's recommended to activate context binding inside each
|
||||||
HTTP request or concurrent `runInContext()` call, by using the `bind` option, as
|
HTTP request or concurrent `runInContext()` call, by using the `bind` option, as
|
||||||
in this example:
|
in this example:
|
||||||
|
|
||||||
var ctx = LoopBackContext.getCurrentContext({ bind: true });
|
var ctx = LoopBackContext.getCurrentContext({ bind: true });
|
||||||
|
|
||||||
|
With the option enabled, this both creates the context, and binds the access
|
||||||
|
methods of the context (i.e. `get` and `set`), at once.
|
||||||
|
|
||||||
|
**Warning**: this only works if it's **the first expression evaluated** in every
|
||||||
|
middleware/operation hook/`runInContext()` call etc. that uses
|
||||||
|
`getCurrentContext`. (It must be the first expression; it may not be enough if
|
||||||
|
it's at the first line). Explanation: you must bind the context while it's still
|
||||||
|
correct, i.e. before it gets mixed up between concurrent operations affected by
|
||||||
|
bugs. Therefore, to be sure, you must bind it before *any* operation.
|
||||||
|
|
||||||
The `bind` option defaults to `false`. This is only in order to prevent breaking
|
The `bind` option defaults to `false`. This is only in order to prevent breaking
|
||||||
legacy apps; but if your app doesn't have such issue, then you can safely use
|
legacy apps; but if your app doesn't have such issue, then you can safely use
|
||||||
`bind: true` everywhere in your app (e.g. with a
|
`bind: true` everywhere in your app (e.g. with a
|
||||||
|
|
Loading…
Reference in New Issue