TypeError: Undefined is not a function - Sails.js
TypeError: Undefined is not a function - Sails.js
所以我目前正在通过一些教程学习 Sails.js
,我现在已经多次遇到这个问题。
我尝试搜索解决方案,但 none 似乎有效。
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);
}
});
}
});
}
}
问题似乎出在这一行,它说:
undefined is not a function.
Users.findByUsername(username).done(function(err, usr)
在我看来,问题出在 .done
上,因为当我尝试这样做时:
Users.findByUsername(username, function(err, usr)
有效。
这是我的Users.js
模特
module.exports = {
attributes: {
username: 'STRING',
password: 'STRING'
}
};
知道如何解决这个问题吗?
同样在 chrome 控制台中,状态代码是:
500 Internal Server Error
问题出在哪里?
您可能正在学习一些为以前版本的 SailsJS 编写的教程。在以前的版本中有一个名为 done
的函数,在新版本中被 exec
取代。尝试用 exec
替换 done
。然后代码会像,
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 is not a function
的原因,因为这个函数已经不存在了,属于旧版本的 sails.js
,现在已经弃用了。
您可以在 this discussion here 中找到更多关于它的信息。
所以你的代码应该是:
Users.findByUsername(username).exec(function(err, usr){
所以我目前正在通过一些教程学习 Sails.js
,我现在已经多次遇到这个问题。
我尝试搜索解决方案,但 none 似乎有效。
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);
}
});
}
});
}
}
问题似乎出在这一行,它说:
undefined is not a function.
Users.findByUsername(username).done(function(err, usr)
在我看来,问题出在 .done
上,因为当我尝试这样做时:
Users.findByUsername(username, function(err, usr)
有效。
这是我的Users.js
模特
module.exports = {
attributes: {
username: 'STRING',
password: 'STRING'
}
};
知道如何解决这个问题吗?
同样在 chrome 控制台中,状态代码是:
500 Internal Server Error
问题出在哪里?
您可能正在学习一些为以前版本的 SailsJS 编写的教程。在以前的版本中有一个名为 done
的函数,在新版本中被 exec
取代。尝试用 exec
替换 done
。然后代码会像,
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 is not a function
的原因,因为这个函数已经不存在了,属于旧版本的 sails.js
,现在已经弃用了。
您可以在 this discussion here 中找到更多关于它的信息。
所以你的代码应该是:
Users.findByUsername(username).exec(function(err, usr){