Bu yüzden, özel bir "nesne" olarak çalışmak istediğim bazı JS kodlarım var ancak JS'nin doğası gereği bunu yapamıyorum.Bir javascript işlevinin/"sınıfının" parametrelerini eşzamansız olarak değiştirin.
: Ben bu yüzden bu aramaya çalıştığımdavar mongoose = require('mongoose');
var dbservice = function() {
this.connected = false;
this.connection_error = false;
this.status_messages = [];
this.connect = function() {
mongoose.connect('Laaaadeedaaaa');
var db = mongoose.connection;
db.on('error', function() {
this.status_messages.push('Nooo! Connection Error');
console.error.bind(console, 'Nooo! Connection Error: ');
this.connection_error = true;
});
db.once('open', function() {
this.status_messages.push('Successfully connected to the database!');
console.log('Successfully connected to the database!');
this.connected = true;
});
};
//DB (db.runCommand({whatsmyuri: 1}))
this.createUser = function(user_in, password_in) {
require("./data/models/user");
var User = mongoose.model('User');
var newUser = new User({ username: user_in, password: password_in, date_created: Date() });
newUser.save(function(err, data) {
if (err) {
this.status_messages.push('User creation error!');
console.log(err);
}
else {
this.status_messages.push('Success!');
console.log('Success:', data);
}
});
};
};
module.exports = dbservice;
:
Yani bir yerde çevrimiçi bir blog takip ettik ve (bana kadar zarif görünüyor ama muhtemelen ne) çözümü bu yazdım
var cur_service = new dbservice();
cur_service.connect();
setTimeout(function() {
console.log("Connected!");
console.log(cur_service.connected);
},3000);
Esasen ne olduğu this.connect
'un başarılı bir şekilde çalışmasıdır (yay) ve kendini hızlı bir şekilde tamamlar (çünkü mongoose işlevleri eşzamansızdır). Yaklaşık 1 saniye sonra konsol, beklendiği gibi Successfully connected to the database
çıktı. Bununla birlikte, zamanlayıcı işaretlendiğinde, cur_service.connected
hala yanlıştır; bu, doğru olarak ayarladığım ve async işlevinin tamamen tamamlandığı gibi kafa karıştırıcıdır. Bu, this.blah =
biçiminin, uyumsuz döndürmelerde uygun olmadığı anlamına gelir. Peki bunu nasıl çözeceksin? Fark etmediğim başka bir temel sözdizimi hatası var mı? Js geliştirmeye yeni başladım (sadece gerçekten iOS/Desktop/C++ kullanıyordum) bu yüzden bu gerçekten yeni ve soyut: P
Yardımlarınız için teşekkürler!
* "JS gibi bir sınıf olarak çalıştırmak istediğim bazı JS kodlarım var ama açıkçası bunu yapamam." * - Üzgünüm, ne? – Tomalak
İlk cümlenizi anlamıyorum. Bu bir yana, nihayetinde başarmaya çalıştığınız şey tamamen açık değil. Ayrıca, bu * kullanımını * kullanmanız gerektiğini de bilmelisiniz ki JS muhtemelen alıştığınız gibi değil. –
Burada bir sürü sorun var."Bu", dbservice() 'de, sadece basit bir işlev çağrısı ise yeni bir nesne oluşturma değil, yararlı bir değere sahip olmayacak. Ve, 'bu', tüm geri çağırma işlevlerinde kaybolur, çünkü bu genellikle bir geri aramada korunmaz. – jfriend00