Javascript TypeError:Undefined不是函数-Sails.js

Javascript TypeError:Undefined不是函数-Sails.js,javascript,node.js,sails.js,typeerror,Javascript,Node.js,Sails.js,Typeerror,因此,我目前正在通过以下教程学习Sails.js,我已经多次遇到这个问题 我试图寻找解决办法,但似乎没有一个奏效 module.exports = { signup: function(req, res) { var username = req.param("username"); var password = req.param("password"); Users.findByUsername(username).done(function(err, usr){

因此,我目前正在通过以下教程学习
Sails.js
,我已经多次遇到这个问题

我试图寻找解决办法,但似乎没有一个奏效

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);
                }
            });
        }
    });
  }
}
问题似乎在这条线上,它说:

未定义不是一个函数

在我看来,问题出在
.done
上,因为当我尝试这样做时:

Users.findByUsername(username, function(err, usr)
它起作用了

这是我在模型下的
Users.js

module.exports = {
attributes: {
    username: 'STRING',
    password: 'STRING'
 }
};
你知道怎么解决这个问题吗

在chrome控制台中,状态代码也是:

500内部服务器错误


问题出在哪里?

可能是您正在学习为以前版本的SailsJS编写的教程。在以前的版本中,有一个名为
done
的函数,在较新的版本中,它被
exec
替换。尝试将
done
替换为
exec
。然后代码会是这样的

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);
                }
            });
        }
    });
  }
}

这是一个常见的问题,原因是
.done()
函数现在在
sails.js
中被弃用,它可能已被删除,但您可以将其替换为
.exec()
函数

这就是为什么这里会出现异常
TypeError:Undefined不是一个函数
,因为这个函数已经不存在了,它属于
sails.js的旧版本,现在已经被弃用了

您可以在中找到更多信息

因此,您的代码应该是:

Users.findByUsername(username).exec(function(err, usr){
成功了,谢谢你,先生!:)我想我必须检查一下sails.js的版本,再次感谢!
Users.findByUsername(username).exec(function(err, usr){