Wie kann ich den nativen Javascript-Treiber von MongoDB mithilfe von bluebird promiziieren?
Ich würde gerne die MongoDB native JS-Treiber mit bluebird verspricht. Wie kann ich Versprechen.promisifyAll()
auf diese Bibliothek?
InformationsquelleAutor der Frage Dmitry Minkovsky | 2014-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den 2.0-Zweig-Dokumentation enthält eine bessere promisification guide https://github.com/petkaantonov/bluebird/blob/master/API.md#promisification
Es hat tatsächlich mongodb Beispiel die viel einfacher ist:
InformationsquelleAutor der Antwort Esailija
Bei der Verwendung
Promise.promisifyAll()
hilft es, zu identifizieren, ein Ziel-Prototyp, wenn das Ziel-Objekt instanziiert. Im Fall von MongoDB JS-Treiber, die standard-Muster ist:Db
- Objekts, entwederMongoClient
statische Methode oder dieDb
KonstruktorDb#collection()
zu bekommenCollection
Objekt.So, in Anlehnung an die https://stackoverflow.com/a/21733446/741970können Sie:
Nun können Sie:
Diese bekommt man ziemlich weit, außer es wird auch helfen, um sicherzustellen, dass die
Cursor
Objekte zurückgegebenCollection#find()
sind auch promisified. In der MongoDB JS-Treiber, der cursor zurückgegebenCollection#find()
ist nicht gebaut, um von einem Prototyp. Also, Sie können wickeln Sie die Methode und promisify der cursor jedes mal. Dies ist nicht erforderlich, wenn Sie nicht verwenden von Cursorn, oder nicht wollen, um mit dem entsprechenden Mehraufwand. Hier ist ein Ansatz:InformationsquelleAutor der Antwort Dmitry Minkovsky
Ich weiß, das wurde mehrfach beantwortet, aber ich wollte hinzufügen, ein wenig mehr Informationen zu diesem Thema. Pro Bluebird eigene Dokumentation verwenden, sollten Sie die 'Verwendung' für die Reinigung von verbindungen und verhindern von Speicherlecks.
Ressource Management in Bluebird
Ich sah ganz über dem Platz für die Vorgehensweise korrekt und die Informationen war spärlich, so dass ich dachte, ich würde teilen, was ich gefunden habe nach viel Versuch und Irrtum. Die Daten, die ich unten verwendet (restaurants) kam aus dem MongoDB-sample-Daten. Bekommen Sie hier: MongoDB Importieren Von Daten
Ich hoffe, dies hilft jemand, der wollte Dinge tun, um das Bluebird-Buch.
InformationsquelleAutor der Antwort Allen Underwood
Version 1.4.9 von
mongodb
sollte jetzt einfach sein promisifiable als solche:Sehen https://github.com/mongodb/node-mongodb-native/pull/1201 für mehr details.
InformationsquelleAutor der Antwort knpwrs
Haben wir die folgenden Treiber in der Produktion für eine Weile jetzt. Es ist im wesentlichen ein Versprechen wrapper über die einheimischen node.js -Treiber. Es fügt auch einige zusätzliche Hilfsfunktionen.
poseidon-mongo
- https://github.com/playlyfe/poseidon-mongoInformationsquelleAutor der Antwort Rajan