node.js - Använda ES6 Promises i Mongoose-kod


Jag försöker använda ES6 Promises för Mongoose ODM i TypeScript.

Jag har följande rad

mongoose.Promise = Promise;

Vilket ger mig följande fel:

error TS2322: Type 'PromiseConstructor' is not assignable to type 'typeof Promise'.
  Type 'Promise<any>' is not assignable to type 'Promise<any>'.
    Property 'end' is missing in type 'Promise<any>'.

Svar #1

Du tilldelar ES6 Native promise till mongoose promise:

mongoose.Promise = Promise;

Du får felet

Egenskapen 'end' saknas i typen 'Promise'.

Eftersom den inbyggda Promise saknar egenskapen end som är närvarande i mongoose Promise (dokumentation https://www.npmjs.com/package/mpromise).

Tillfällig lösning

Du kan antingen:

  • Hacka mongoose-definitionen för att ljuga och säga att det är en ES6 Promise istället för mpromise
  • Eller undertryck felet:

    mongoose.Promise = Promise as any;
    
  • Eller inte göra detta alls :)

Relaterade artiklar