打字稿 - 在箭头(回调)函数中使用它 - mongoose

时间:2017-11-09 08:00:18

标签: typescript mongoose schema this

我如何在箭头中使用此关键字(回调函数)。我在课堂上创建了mongoose Schema。看看吧。

class UserSchema {
    private userSchema: Schema;

    constructor() {
        this.setSchema();
    }

    public getUserSchema(): Schema {
        return this.userSchema;
    }

    private setSchema() {
        this.userSchema = new Schema({
            createdAt: Date,
            uptadedAt: Date,
            email: String,
            password: String
        });

        this.preSave();
    }

    private preSave() {
        this.userSchema.pre('save', (next: NextFunction) => {
            /*
                Here
            */
            if(this.createdAt)
                this.createdAt = new Date();
            next();
        });
    }
}

如您所见,我添加了评论。我想访问createdAt将日期添加到变量,但我无法访问此关键字:( 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我没有尝试使用Mongoose,但这是我通常在类中使用箭头函数的方法:只需创建一个新方法并引用它。它可以防止“回调金字塔”和this一直引用类实例

class UserSchema {
    private preSave() {
        this.userSchema.pre('save', (next: NextFunction) => this.doSomething(next))
    }
    private doSomething(next:NextFunction) {
        console.log(this)
        console.log("this should be the UserSchema instance")
        if(this.createdAt) {
                this.createdAt = new Date()
        }
        next()
    }
}