簡體   English   中英

TypeError:Undefined不是函數 - Sails.js

[英]TypeError: Undefined is not a function - Sails.js

所以我現在正在通過一些教程學習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不是一個函數。

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內部服務器錯誤

哪里可能是問題?

可能是您正在關注為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()函數替換它。

這就是Exception TypeError: Undefined is not a function原因,因為這個函數不再存在並且屬於sails.js舊版本,現在它已經過時了。

你可以在這里討論更多的內容

所以你的代碼應該是:

Users.findByUsername(username).exec(function(err, usr){

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM