2016-04-05 26 views
1

Bu sorunun yanıtlarını bulamıyorum, ancak göreceli olarak yaygın bir sorun olmalı. Diğer tüm sorular boş bir kapanışa basitçe değişkenler eklemekle ilgili gibi görünüyor.ADDITIONAL bağımsız değişkenleri varolan bir geri arama işlevine nasıl iletilir

İki argüman alan bir geri çağırma var; Yine de ihtiyacım olan err ve docs, ancak ayrıca ek bir veri argümanı eklemek istiyorum.

db.findOne().exec(function (err, docs) { 
    // err is defined 
    // docs is defined 
}); 

Ben bu yüzden bu yapabileceğini kabul, onunla birlikte data geçmesi gerekiyor: Bu işe yaramazsa

db.findOne().exec(function (err, docs, data) { 
    // err is defined 
    // docs is defined 
}(data)); 

.

db.findOne().exec(function (err, docs, data) { 
    // err is null 
    // docs is null 
}(null, null, data)); 

Bu hem orijinal değişkenleri err ve docs öldürdü: Yani, şu çalıştı.

Peki, bunu nasıl yapmak için giderim?

+0

'fonksiyonu (err, dokümanlar, veriler) {' 'iç function' dönmelidir .exec'in bir işleyicisi olarak – Rayon

cevap

1

Sadece (sadece db.findOne() yöntemini çağırmadan önce) sürece bu değişken dış kapsamında tanımlandığı şekilde callback'inde iç data değişkeni kullanabilirsiniz:

var data = ... 
db.findOne().exec(function (err, docs) { 
    // err is defined 
    // docs is defined 
    // data is defined 
}); 
0

Sen geri arama işlevi içinde işlevini sarmak zorunda .

varsa gibi işlevi: ek parametreleri geçirmek için aşağıdaki işlevi kullanabilirsiniz

db.findOne().exec(function (err, docs) { 
    // err is defined 
    // docs is defined 
}); 

:

db.findOne().exec(function (err, docs) { 
var data={a:'a'}; 
    yourFunction(err, docs, data); 
}); 

function yourFunction(err, docs, data){ 
// access data here 
}