javascript - TypeError:未定义不是函数 - Sails.js

标签 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){
        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/

相关文章:

javascript - 使用 GruntJs 压缩脚本

javascript - 使用 AngularJS 将 HTML 文件中的数字限制为小数点后两位

javascript - 如何配置 grunt-contrib-uglify 以在保留目录结构的同时缩小文件

javascript - Node.js & Socket.io 添加用户名

sails.js - 扬 sails 起航 JS

javascript - 需要 jquery 方面的帮助

node.js - 使用 nodejs 客户端访问 golang websocket 服务器

node.js - jsonwebtoken 不会过期

node.js - 风 sails JS : Mysterious null values

node.js - 用于带有 sails 的 React-Redux 应用程序的 SSR