Quindi ci sono un paio di altre query intorno a questo tema, quali: How can I promisify the MongoDB native Javascript driver using bluebird?MongoDB nodo conducente 2.0 * con Bluebird 2.9 * promisification
Tuttavia non sembra per affrontare l'ultima versione del driver, che sembra avere problemi quando si cerca di promettere. Attualmente posso ottenere il MongoClient
lavorare facendo:
Promise.promisifyAll(mongodb.MongoClient); // Using .Prototype here fails to promisify
Tuttavia, non importa quello che cerco le collezioni non sembrano funzionare utilizzando le *async
chiamate, può invocateli ma non hanno mai si risolvono o respinto in modo da basta appendere in un limbo.
Storicamente nelle versioni precedenti si sarebbe solo Promise.promisifyAll(mongodb)
e si è fatto, ma non sono sicuro su come gestirlo correttamente nel nuovo driver.
Ecco un esempio di output di una raccolta che è stata creata utilizzando la promessa di promulgazione di mongo connectAsync
quindi ottenere la raccolta dal db restituito. Una volta che provo a fare qualcosa sulla raccolta appende appena e promesse non restituiamo da esso:
{ 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' } }
Per chiunque altro guardando questo, in Mong o 2. * sembrano cambiare ciò che viene restituito da determinati metodi, come findAsync ora sembra restituire alcuni modelli enormi piuttosto che i documenti che stavo ottenendo prima, quindi questo problema è una via di mezzo tra dover migrare la logica e dover promettilo correttamente – Grofit