loopbackio / loopbackio/loopback-datasource-juggler
Allow connectors to use async/await
@markirish y travaille déjà.
Depuis le 24/9/2019.
- Langage dominant
- JavaScript
- Étoiles
- 282
- Forks
- 366
- Merge moyen
- 17 h 4 min
- PR mergées (30 j)
- 10
Description
I would like to allow connector authors to use async functions instead of the current callback style.
Acceptance criteria
- Define a new contract for connector: a connector provides a flag indicating whether it's callback based or async/promise based. We assume callbacks when the flag is not set (backward compatibility).
- All DAO/KVAO methods need to be updated to check what flavor of flow control the connector support and invoke connector methods accordingly. Ideally, there should be a shared helper taking care of implementation details of consuming callback or promise style connectors.
- Rework Connector and SqlConnector classes provided by loopback-connector to use async functions instead of callbacks everywhere. This is a semver-major change.
- Rework the documentation for connector authors to use async functions instead of callbacks.
- Add a new DataSource method
executethat supports dual callback/promise API and under the hood calls connector'sexecutemethod using the correct style (callback/promise) as provided by the connector. EDIT: The method was already added by https://github.com/strongloop/loopback-datasource-juggler/pull/1671, now we need to update it to support async execute provided by the connector.
Out of scope
Eventually we should update all of our connectors to use the new major version of loopback-connector and switch to async functions. There should be follow-up issues opened (one per the connector repository). Note that connectors using async functions become incompatible with LB 3.x projects (because they don't support connectors exporting async functions), the upgrade must be released as semver-major.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Évaluation
Cette issue n'a pas encore été évaluée.