当我将string
转换为ObjectId
时,我使用
import * as mongoose from 'mongoose';
const objId = mongoose.Types.ObjectId(strId);
在 TypeScript 1.x 中效果很好,在更新到 TypeScript 2.x 后,我收到错误:
错误TS2348:类型'typeof ObjectID'的值不可调用。你是否 意味着包括'新'?
我该如何解决?感谢
答案 0 :(得分:2)
mongoose文档显示您可以在没有ObjectId
关键字的情况下实例化new
,但是打字稿定义(至少是我见过的那些,如the one on DefinitelyTyped)没有那么,如果你想避免打字稿编译错误,你需要使用new
关键字:
const objId = new mongoose.Types.ObjectId(strId);
您还应该能够执行以下操作:
type ObjectIdConstructor = {
(str: string): mongoose.Types.ObjectId;
new (str: string): mongoose.Types.ObjectId;
}
const objId = (mongoose.Types.ObjectId as ObjectIdConstructor)(strId);
答案 1 :(得分:0)
应该是mongoose.Schema.Types.ObjectId
而不是mongoose.Types.ObjectId
。