2016-02-25 2 views
3

Я пытаюсь использовать ES6 Promises для Mongoose ODM в TypeScrpt.Использование ES6 Promises в коде Mongoose

У меня есть следующая строка

mongoose.Promise = Promise; 

Который дает мне следующую ошибку:

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>'. 
+0

Я следую инструкциям на веб-сайте Mongoose, http://mongoosejs.com/docs/promises.html. Кажется, что составитель машинописных текстов не устраивает что-то. –

+0

И имейте в виду, что Mongoose может потребовать более полнофункциональную реализацию спецификации Promises, чем в собственном «Promise». Ванильная реализация чрезвычайно проста. – Andrew

+0

'require ('mongoose'). Promise = Promise;' хорошо работать для меня под узлом 'v5.3.0', какова ваша версия узла? – zangw

ответ

3

Вы назначая ES6 Native promise к мангуст promise:

mongoose.Promise = Promise; 

Вы получаете ошибка

Property 'end' is missing in type 'Promise'.

Поскольку родной Promise отсутствует свойствоend который присутствует в мангустов Promise (документы https://www.npmjs.com/package/mpromise).

Обход

Вы можете:

  • Hack определение мангуст лгать и говорить сво ES6 Promise вместо mpromise
  • Или Подавлять ошибку:

    mongoose.Promise = Promise as any; 
    
  • Или не делайте этого полностью :)

Смежные вопросы