所以我目前正在通过一些教程学习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);
}
});
}
});
}
}
问题似乎在这一行,它说:
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
取代。尝试将 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);
}
});
}
});
}
}
关于javascript - TypeError:未定义不是函数 - Sails.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30391345/