Nodejs sunucumu Bluebird kitaplığı ile sözler kullanarak yeniden çalışmaya çalışıyorum, ancak basit bir sorunla karşılaşıyorum. çalışmıyorPromise.promisify ile "bu" doğru nasıl sağlanır?
Kötü Yol (çalışma ...)
adapter.getUsers(function(users){
users.rows.forEach(function(item){
user = item.username;
adapter.getNotifications(user, function(notificationList){
console.log(notificationList);
})
});
});
Şık Geçici Yolu (:
benim db kullanıcıları almak için sonra bu kullanıcıyla ilişkili tüm bildirim sınıfı listelemek istediğiniz Bu kodu çalıştırdığınızda ...)
var getNotifications = Promise.promisify(adapter.getNotifications);
adapter.getUsers().then(function(users) {
users.rows.forEach(function(item){
var dbUser = "sigalei/" + item.value.name;
console.log(dbUser);
return getNotifications(dbUser);
});
}).then(function(result){
console.log(result);
console.log("NOTIFICATIONLIST");
});
Ancak benim getNotification yönteminin içine bu hatayı alıyorum:
Unhandled rejection TypeError: Cannot read property 'nano' of undefined at Adapter.getNotifications (/Users/DaniloOliveira/Workspace/sigalei-api/api/tools/couchdb-adapter.js:387:30) at tryCatcher (/Users/DaniloOliveira/Workspace/sigalei-api/node_modules/bluebird/js/main/util.js:26:23)
DÜZENLEME
user2864740`s değerli yorumların sonra hata bazı kapsam sorunu alakalı olduğunu tespit ettik. Yani, neden yöntemini kullanarak sonra, yöntemNotifications "bu" env değişkeni tanımak değil mi?var Adapter = module.exports = function(config) {
this.nano = require('nano')({
url: url,
request_defaults: config.request_defaults
});
};
Adapter.prototype.getNotifications = function(userDb, done) {
var that = this;
console.log(that);
var userDbInstance = that.nano.use(userDb);
userDbInstance.view('_notificacao', 'lista',
{start_key: "[false]", end_key: "[false,{}]"},
function(err, body) {
if(err){ done(err); }
done(body);
});
};
Hey, hata "promisify" olan getNotifications yönteminin içinde oluşturulur. –
@ user2864740 Yine soruyu düzenledim, problemin kapsam değişkenleriyle ilgili olduğunu düşünüyorum ... –
'.call() '' '' '' '' '' '' '' '' '' '' 'ile' '' 'yi deneyin. – Amit