TypeScript 2.0 mongoose で hook が動かない
環境
Typescript 2.0.6 Mongoose 4.9.4
原因
TypeScript, ES6, Mongoose のどれが良くないのかはわからないけど アロー記法がお気に召さないらしい。
ソースは通っているのに動かない。 以前は mocha テストの this.timeout() も効かなかった。 function(… に直したら想定通りに動くようになった。 アロー記法と function 定義は同じでなかったからそういうことも有り得そうだけど.. エラーも出ないし時間がかかった。
NG
import {Schema} from "mongoose"; export let sampleSchema: Schema = new Schema({ name: String, createdAt: Date, deleted: Boolean, }) .pre('save', (next)=> { if (!this.createdAt) { this.createdAt = new Date(); this.deleted = false; } next(); });
OK
import {Schema} from "mongoose"; export let sampleSchema: Schema = new Schema({ name: String, createdAt: Date, deleted: Boolean, }) .pre('save', function (next) { if (!this.createdAt) { this.createdAt = new Date(); this.deleted = false; } next(); });