NodeJS + TypeScript,mongoose自定义接口不能正确扩展mongoose.Document

时间:2017-10-14 15:51:55

标签: node.js mongodb typescript mongoose

我对打字稿比较新,所以我部分遵循了这个指南: http://brianflove.com/2016/11/11/typescript-2-express-mongoose-mocha-chai/

我最终得到了以下代码(仅相关部分):

import { Document } from "mongoose";
import { IUser } from "../interfaces/user";

export interface IUserModel extends IUser, Document {
  // custom methods for your model would be defined here
}

import { IUserModel } from "./models/user";    

let connection: mongoose.Connection = mongoose.createConnection(MONGODB_CONNECTION);
this.model.user = connection.model<IUserModel>('User', userSchema);

var newUser: IUserModel = <IUserModel>{username:'asd',password:'bsd',email:'lol',admin:false};

newUser.save();

根据编辑,它应该可以工作,但是newUser只有编译后我给它的属性。

我的设置与教程中的设置完全相同。

有谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

显然,我的整个方法都是错误的。

使用<IUserModel>{...}创建一个newUser只会创建一个与其接口参数匹配的对象,而不会创建任何其他对象,因此在这种情况下,对象填充了用户名,密码等,而不是实际的模型实例。

它甚至与它上面的连接无关,这是我完全错过的。

所以我只需要做以下事情:

var newUser = new this.model.user({ username: 'asd', password: 'bsd', email: 'lol', admin: false });
newUser.save();

这会创建我想要的正确模型实例。