我正在使用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查询的返回类型?我应该为我的应用编写自定义定义文件吗?任何其他建议将不胜感激.
谢谢 !
我创建了一个新项目,安装了几个类型定义(来自DefinitelyTyped)并制作了一个基本src/go.ts文件.
每当我转换代码时,我都会遇到大量TS2304: Cannot find name 'Promise'错误!
该./typings/mongodb/index.d.ts被引用Promise,但编译器似乎并没有发现.
请注意我也dt~promise安装了.
屏幕截图 (左侧错误,已安装类型定义,应用程序代码位于右侧)
内容typings.json:
{
"globalDependencies": {
"dotenv": "registry:dt/dotenv#2.0.0+20160327131627",
"express": "registry:dt/express#4.0.0+20160708185218",
"express-serve-static-core": "registry:dt/express-serve-static-core#4.0.0+20160805091045",
"mime": "registry:dt/mime#0.0.0+20160316155526",
"mongodb": "registry:dt/mongodb#2.1.0+20160602142941",
"mongoose": "registry:dt/mongoose#4.5.4+20160807120805",
"mongoose-promise": "registry:dt/mongoose-promise#4.5.4+20160720003345",
"node": "registry:dt/node#6.0.0+20160807145350",
"promise": "registry:dt/promise#7.1.1+20160602154553",
"serve-static": "registry:dt/serve-static#0.0.0+20160606155157"
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?