Typescript 应用程序中的“mpromise(猫鼬的默认承诺库)已弃用”

Posted

技术标签:

【中文标题】Typescript 应用程序中的“mpromise(猫鼬的默认承诺库)已弃用”【英文标题】:"mpromise (mongoose's default promise library) is deprecated" in Typescript Application 【发布时间】:2017-02-28 14:56:49 【问题描述】:

如何从 Typescript 应用程序中解决“不推荐使用 mpromise(mongoose 的默认承诺库)”。

我收到以下错误:

赋值表达式的左侧不能是常量或只读属性。

我正在使用MEAN stack with Angular 2 并希望猫鼬使用 bluebird promise 库。

当我尝试在 Stack Overflow 和 Mongo 上按照这些说明操作时遇到错误

说实话,我不确定我的问题是否只是缺乏对 Typescript 的了解,或者我做错了什么。

"use strict";

import * as mongoose from 'mongoose';
var dbConst = require('../constants/db.json');
var bluebird = require("bluebird");

export class DBConfig 
    static init():void 
      const URL = (process.env.NODE_ENV === 'production') ? process.env.MONGOHQ_URL
                                                          : dbConst.localhost;

      mongoose.Promise = bluebird;     // <-- THIS IS WHERE ERROR OCCURS
      mongoose.connect(URL);
      mongoose.connection.on('error', console.error.bind(console, 'An error ocurred with the DB connection: '));
    
;

【问题讨论】:

【参考方案1】:

我相信以下应该有效:

import * as mongoose from "mongoose";
import * as bluebird from "bluebird";

//either this
(<any>mongoose).Promise = bluebird;

//OR pass it in as an option
const connection = mongoose.createConnection("mongodb://localhost:27017",  
    promiseLibrary: bluebird
);

【讨论】:

以上是关于Typescript 应用程序中的“mpromise(猫鼬的默认承诺库)已弃用”的主要内容,如果未能解决你的问题,请参考以下文章

Typescript 入门手册之函数类型在 TypeScript 中的应用

Typescript 入门手册之函数类型在 TypeScript 中的应用

Typescript入门手册之基本类型在TypeScript中的应用

Typescript入门手册之基本类型在TypeScript中的应用

使用 Typescript 的 Ionic 1 应用程序中的 Cordova 插件

typeScript中的函数