因此,我目前正在通过一些教程学习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);
}
});
}
});
}
}问题似乎就在这条线上,它说:
未定义不是函数。
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内部服务器错误
问题在哪里?
发布于 2015-05-22 08:22:28
可能您正在遵循一些教程,该教程是为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);
}
});
}
});
}
}发布于 2015-05-22 08:23:16
这是一个常见的问题,因为.done()函数现在在sails.js中被废弃了,并且它可能被删除了,但是您可以用.exec()函数替换它。
这就是为什么在这里引发异常TypeError: Undefined is not a function的原因,因为这个函数不再存在,属于sails.js的旧版本,现在已经不再推荐它了。
您可以在这里的讨论中找到更多的相关信息。
所以你的代码应该是:
Users.findByUsername(username).exec(function(err, usr){https://stackoverflow.com/questions/30391345
复制相似问题