Tho*_*mas 5 mongoose mongodb node.js typescript
我正在使用nodejs/typescript和mongodb数据库开发一个应用程序.要查询数据库,我使用的是mongoose.
我刚刚阅读了mongoose文档中有关如何插入外部promise库的文章,它非常简单:
import mongoose = require("mongoose");
import Promise = require("bluebird");
mongoose.Promise = Promise;
Run Code Online (Sandbox Code Playgroud)
这样做很好.但是我想扩展/覆盖返回的promise的类型.
这是一个函数的例子:
public getModel= () => {
return MyModel.findOne().exec();
}
Run Code Online (Sandbox Code Playgroud)
这个函数返回一个_mongoose.Promise<MyModel>,我想要返回一只蓝鸟,Promise<MyModel>因为我知道这是一只蓝鸟的承诺.
无论如何都有改变/扩展/覆盖mongoose查询的返回类型?我应该为我的应用编写自定义定义文件吗?任何其他建议将不胜感激.
谢谢 !
小智 5
Promise导出为mongoose中的变量,因此您可以mongoose先将名称空间转换为任何名称,然后再设置Promise为其他名称空间.
qlib.
npm install --save q @types/q先安装.tsc版本> = 2.0.(<any>mongoose).Promise = Q.Promise;bluebirdlib,在下面添加代码.
import Bluebird = require("bluebird");(<any>mongoose).Promise = Bluebird;mongoose 团队更新了定义文件,您现在可以通过分配MongoosePromise<T>.
为您的应用程序创建一个主.d.ts文件并添加以下内容:
declare module "mongoose" {
import Bluebird = require("bluebird");
type MongoosePromise<T> = Bluebird<T>;
}
Run Code Online (Sandbox Code Playgroud)
在您的项目中引用此文件,现在 Mongoose 返回 Bluebird Promise!
这也适用于其他承诺库。
编辑最新的打字版本
declare module "mongoose" {
import Bluebird = require("bluebird");
type Promise<T> = Bluebird<T>;
}
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档
| 归档时间: |
|
| 查看次数: |
4403 次 |
| 最近记录: |