2015-05-22 50 views
10

Şu anda bazı öğreticiler takip ederek Sails.js öğreniyorum ve şimdi bu sorunla çok kez karşılaştım.TypeError: Tanımsız bir işlev değil - Sails.js

Çözümleri aramayı denedim, ancak bunların hiçbiri işe yaramadı. Ben böyle yapmaya çalıştığınızda çünkü

undefined is not a function.

Users.findByUsername(username).done(function(err, usr) 

Sorun .done açık olduğunu bana öyle geliyor:

module.exports = { 
signup: function(req, res) { 
    var username = req.param("username"); 
    var password = req.param("password"); 

    Users.findByUsername(username).done(function(err, usr){ 
     if (err) { 
      res.send(500, { error: "DB Error" }); 
     } else if (usr) { 
      res.send(400, {error: "Username already Taken"}); 
     } else { 
      var hasher = require("password-hash"); 
      password = hasher.generate(password); 

      Users.create({username: username, password: password}).done(function(error, user) { 
       if (error) { 
        res.send(500, {error: "DB Error"}); 
       } else { 
        req.session.user = user; 
        res.send(user); 
       } 
      }); 
     } 
    }); 
    } 
} 

sorunlar o söylüyor, bu hat üzerinde gibi görünüyor Çalışır:

çalışır.

Bu, bu nasıl giderileceği ile ilgili benim model altında Users.js

module.exports = { 
attributes: { 
    username: 'STRING', 
    password: 'STRING' 
} 
}; 

Herhangi bir fikir?

Ayrıca krom konsolunda durum kodudur:

500 Internal Server Error

Nerede sorun olabilir?

cevap

11

SailsJS'in önceki sürümü için yazılan bazı eğiticiyi takip ediyor olabilirsiniz. Önceki versiyonda done adında bir işlev vardı, bu daha yeni sürümlerde exec ile değiştirildi. exec ile done'u değiştirmeyi deneyin. Bu .done() işlevi artık sails.js önerilmiyor ve muhtemelen kaldırılır ama .exec() fonksiyonu ile değiştirebilirsiniz gerçeği neden olduğu yaygın bir sorundur

module.exports = { 
signup: function(req, res) { 
    var username = req.param("username"); 
    var password = req.param("password"); 

    Users.findByUsername(username).exec(function(err, usr){ 
     if (err) { 
      res.send(500, { error: "DB Error" }); 
     } else if (usr) { 
      res.send(400, {error: "Username already Taken"}); 
     } else { 
      var hasher = require("password-hash"); 
      password = hasher.generate(password); 

      Users.create({username: username, password: password}).done(function(error, user) { 
       if (error) { 
        res.send(500, {error: "DB Error"}); 
       } else { 
        req.session.user = user; 
        res.send(user); 
       } 
      }); 
     } 
    }); 
    } 
} 
+2

efendim teşekkür ederim! :) Sanırım sails.js versiyonlarını tekrar kontrol etmeliyim! – bless1204

+1

Siz adamsınız, teşekkürler bruh! – luke

1

gibi Sonra kod olacak.

Bu nedenle, burada TypeError: Undefined is not a function Özel Durum istisnası kaldırılmıştır, çünkü bu işlev artık mevcut değildir ve sails.js'un eski sürümlerine aittir ve artık Kullanımdan kaldırılmıştır.

this discussion here'da daha fazla bilgi bulabilirsiniz.

Yani kodu olmalıdır: İşe yaradı

Users.findByUsername(username).exec(function(err, usr){ 
İlgili konular