więc istnieje kilka innych zapytań wokół tej kwestii, takich jak: How can I promisify the MongoDB native Javascript driver using bluebird?węzeł MongoDB kierowca 2,0 * z Bluebird 2,9 * promisification
Jednak nie wydaje się, aby rozwiązać najnowszą wersję sterownika, który wydaje mieć problemy podczas próby promisify. Obecnie można uzyskać MongoClient
pracuje wykonując:
Promise.promisifyAll(mongodb.MongoClient); // Using .Prototype here fails to promisify
Jednak bez względu na to, co staram się Collections nie wydają się działać przy użyciu połączenia *async
, może je wywołać, ale nigdy nie zostanie rozwiązany lub odrzucone więc po prostu zwisają w otchłani.
Historycznie w poprzednich wersjach byłeś po prostu Promise.promisifyAll(mongodb)
i skończyłeś, ale nie jestem pewien, jak poprawnie obsłużyć to w nowym sterowniku.
Oto przykładowe dane wyjściowe kolekcji, która została utworzona za pomocą mongo direct promisification connectAsync
, a następnie pobranie kolekcji z zwróconej bazy danych. Raz spróbować zrobić coś w sprawie zbierania po prostu zawiesza się i obiecuje dont powrócić z nim:
{ s: { pkFactory: { [Function: ObjectID] index: 14727641, createPk: [Function: createPk], createFromTime: [Function: createFromTime], createFromHexString: [Function: createFromHexString], isValid: [Function: isValid], ObjectID: [Circular], ObjectId: [Circular], createPkAsync: [Object], createFromTimeAsync: [Object], createFromHexStringAsync: [Object], isValidAsync: [Object], bindAsync: [Object], toStringAsync: [Object], callAsync: [Object], applyAsync: [Object], lazyAsync: [Object], throttleAsync: [Object], debounceAsync: [Object], delayAsync: [Object], everyAsync: [Object], cancelAsync: [Object], afterAsync: [Object], onceAsync: [Object], fillAsync: [Object] }, db: { domain: [Object], _events: {}, _maxListeners: undefined, s: [Object], serverConfig: [Getter], bufferMaxEntries: [Getter], databaseName: [Getter], options: [Getter], native_parser: [Getter], slaveOk: [Getter], writeConcern: [Getter] }, topology: { domain: [Object], _events: [Object], _maxListeners: undefined, connectTimeoutMS: 500, s: [Object], bson: [Getter], isMasterDoc: [Getter], poolSize: [Getter], autoReconnect: [Getter], host: [Getter], port: [Getter], emitOpen: false, socketTimeoutMS: 0 }, dbName: 'some-db-name', options: {}, namespace: 'some-namespace', readPreference: null, raw: undefined, slaveOk: false, serializeFunctions: undefined, internalHint: null, collectionHint: null, name: 'some-collection-name' } }
Dla każdego, kto na to patrzy, w Mong o 2. * Wydaje się, że zmieniają one to, co jest zwracane z pewnych metod, jak np. findAsync wydaje się teraz zwracać kilka dużych modeli zamiast dokumentów, które otrzymywałem wcześniej, więc ten problem jest w połowie drogi między koniecznością migracji logiki i konieczności dobrze ją uzasadnić. – Grofit