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){