2013-02-04 21 views
10

Moğol modelimde, zamana bağlı olarak bazı stats var. Fikrim, model yüklendikten hemen sonra bu istatistikleri değiştirmek için middleware eklemektir.Mongoose yüklendikten sonra model değerlerini değiştirme

Maalesef, post -Hooks belgesindeki belgeler biraz net değil.

schema.post('init', function(doc) { 
    doc.foo = 'bar'; 
    return doc; 
}); 

Onların tek örnekler

console.log -outputs içerir: Böyle bir kanca kullanabilirsiniz gibi görünüyor. doc'un geri döndürülmesi gerekiyorsa ya da Kancada bir değişikliğin imkansız olması halinde (asenkronize olmadığından karmaşık fikirler için çok az bir kullanım olabilir) herhangi bir şekilde açıklanmamaktadır.

'init' numaralı pre, yükte bir modeli otomatik olarak güncelleştirmek için doğru yol değilse, o zaman nedir?

cevap

16

Biz uyumsuz çalışma yüküne modelleri, güncelleme nasıl:

schema.pre('save', function(next) { 
    this.accessed_ts = Date.now(); 
    next(); 
}); 
+2

:

schema.pre('init', function(next, data) { data.property = data.property || 'someDefault'; next(); }); 

Öncesi init özeldir, diğer kanca örnek için önceden kurtarmak biraz daha farklı bir imzaya sahip Öyleyse pre-init aslında veri yüklendikten sonra mı? Ve belge 'bu' bağlamında değil? – Lanbo

+3

Pre-init, veri yüklendikten sonra, ancak * önce * doküman bu verilerle sulandırılmıştır (afaik). Veriler henüz belgeye yerleştirilmediğinden, “bu” içerik var (hala doküman) ama boş olacak (iirc). – hunterloftis

+0

Dokümanlar bunu açıklamasını isterdim. – binki

İlgili konular