Node.js 静态方法中的语境松动
我做错了什么?Node.js 静态方法中的语境松动,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我做错了什么? 我有一个模式 import * as mongoose from 'mongoose'; const PolicySchema = new mongoose.Schema({ number: { type: 'String', required: true }, startDate: { type: mongoose.Schema.Types.Date, required: true }, endDate: { type: mongoose.Schema.Types
我有一个模式
import * as mongoose from 'mongoose';
const PolicySchema = new mongoose.Schema({
number: { type: 'String', required: true },
startDate: { type: mongoose.Schema.Types.Date, required: true },
endDate: { type: mongoose.Schema.Types.Date, required: true },
],
});
PolicySchema.statics.lookup = function() {
console.log(this);
};
export {PolicySchema};
当为我服务时,我称之为
@Injectable()
export class PolicyService {
async test() {
this.policyModel.schema.statics.lookup();
}
constructor(@InjectModel('Policy') private readonly policyModel: Model<Policy>) { }
}
@Injectable()
出口类保单服务{
异步测试(){
this.policyModel.schema.statics.lookup();
}
构造函数(@InjectModel('Policy')私有只读policyModel:Model){}
}
在控制台上,我可以读取我的“This”上下文,它只是一个{lookup:[函数]}
我的错在哪里在“This”上,我想获得聚合或模式之类的函数 也许我说错了?
请帮帮我:) 附言。
我使用了一个nest.js我查看了文档: 看起来您可以直接在模型上调用
静态
函数,尽管您可能需要为您的模型创建一个包含新函数的接口
所以,上面的例子应该是
接口策略模型扩展模型{
查找:()=>void;
}
@可注射()
出口类保单服务{
异步测试(){
this.policyModel.lookup();
}
构造函数(@InjectModel('Policy')私有只读policyModel:policyModel){}
}
执行此操作时,会出现错误“类型“Model”上不存在属性“lookup”。“我更新了上面的示例,为包含函数的模型添加了一个Typescript接口。这应该解决这个问题。)之后就是工作了,谢谢