2014-02-06 57 views
1

我正在使用mongoosejs並且具有自定義方法來在預保存期間填充某些數據。有沒有辦法在方法內查詢數據庫?mongoosejs在方法中執行查詢

例如:

UserSchema.methods.createRandom = function(callback) { 
    var random = 123; 
    this.findOne({random: random}, function(err, doc) { 
    if (!doc) return callback(random); 
     this.createRandom(callback); 
    }); 
} 

UserSchema.pre('save', function(next) { 
    this.createRandom(function(random) { 
    this.random = random; 
    next(); 
    }); 
} 

這基本上就是我想acheive,但this的方法不引用模型,它引用要保存的對象。無論如何訪問findOne()的模型。

謝謝!

回答

2

這是一個神祕的,而如果它記錄任何地方我不知道,但我確實地通過其constructor屬性訪問實例的模式做到了這一點,在過去:

this.constructor.findOne({random: random}, function(err, doc) { 
+0

這似乎是一個比我的答案好得多 –

相關問題