TS 2322:typescript和mongoose.model作为函数的返回类型

时间:2017-09-14 07:10:36

标签: typescript mongoose

打字稿新手。我试图创建一个基于角色的猫鼬模型工厂将返回猫鼬模型。然后,我将在数据访问层(DAL)中使用此模型继续我的业务层。问题是我收到以下错误。 TS2322:type' typeof(../../ model)不能分配给' Model。物业' findById'类型' typeof(' ../../ model')

中缺少

我错过了一个明确的演员?

型号代码

foreach(Label label in dv.GetControls<TextBox>())
{
    //do stuff
    txt.Text = string.Empty;
}

foreach(DropDownList ddl in dv.GetControls<DropDownList>())
{
    //do stuff
    ddl..ClearSelection();    
}

**我的模型工厂代码**我在返回StudentNotification代码中收到错误。

import * as mongoose from "mongoose";

let StudentSchema = new mongoose.Schema({
  id:Number,
  username: String,
  email: String,
  sectors: [{
    sectorName:String,
    QP: String
  }]  
}, {
  timestamps: {
  createdAt: 'created_at'
 }
});

export default mongoose.model('StudentNotification', StudentSchema);

2 个答案:

答案 0 :(得分:1)

要导入默认导出,您需要使用以下语法:

import * as mongoose from "mongoose";
import StudentNotification from './models/student'; // HERE !

function Create():mongoose.Model<mongoose.Document>{
    switch(this.userRole){
        case "Student":{
            return StudentNotification;
        }
        default :{
            return null;
        }
    }
}

或者如果你使用*语法,那么你必须这样写:

import StudentNotification from './models/student';
... 
      return StudentNotification.default;

答案 1 :(得分:0)

您必须将import语句更改为:

import StudentNotification from './models/student';

因为当您导出它时,您使用default关键字将其导出。

export default mongoose.model('StudentNotification', StudentSchema);