我正在尝试使用Typescript将我的模型与猫鼬模式绑定。我有我的IUser界面:
export interface IUser{
_id: string;
_email: string;
}
Run Code Online (Sandbox Code Playgroud)
我的用户类别:
export class User implements IUser{
_id: string;
_email: string;
}
Run Code Online (Sandbox Code Playgroud)
我的RepositoryBase:
export class RepositoryBase<T extends mongoose.Document> {
private _model: mongoose.Model<mongoose.Document>;
constructor(schemaModel: mongoose.Model<mongoose.Document>) {
this._model = schemaModel;
}
create(item: T): mongoose.Promise<mongoose.model<T>> {
return this._model.create(item);
}
}
Run Code Online (Sandbox Code Playgroud)
最后是我的UserRepository,它扩展了RepositoryBase并实现了IUserRepository(实际上为空):
export class UserRepository extends RepositoryBase<IUser> implements IUserRepository{
constructor(){
super(mongoose.model<IUser>("User",
new mongoose.Schema({
_id: String,
_email: String,
}))
)
}
Run Code Online (Sandbox Code Playgroud)
}
问题是打字稿编译器一直在说: 类型“ IUser”不满足约束“文档”
如果我这样做:
export interface IUser extends mongoose.Document
Run Code Online (Sandbox Code Playgroud)
该问题已解决,但编译器表示: 类型“用户”中缺少属性“增量”
真的,我不希望我的IUser扩展mongoose.Document,因为IUser或User都不应该知道存储库的工作方式及其实现。
使用两个嵌套的chai请求时,会话丢失.
chai.request(server)
.post('/api/v1/account/login')
.send({_email: 'test@test.com', _password: 'testtest'})
.end(function(err, res){
chai.request(server)
.get('/api/v1/user/me')
.end(function(err2, res2){
//here i should get the session, but its empty
res2.should.have.status(200);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
而且我很确定这是我的mocha测试中的一个错误,因为我在测试之外尝试了它(登录然后检索会话)并且正在设置会话.