【问题标题】:TypeError: User is not a constructor - Mongoose Node.js Express-ValidatorTypeError:用户不是构造函数 - Mongoose Node.js Express-Validator
【发布时间】:2018-08-22 19:56:10
【问题描述】:

我收到了这个错误:

“用户不是构造函数类型错误”

我无法找出代码中有什么问题。任何建议表示赞赏!

routes/users.js

// Initialised user.js into users.js
// var User = require('../models/user');

if (errors) {
    // code here is working
} else {
    console.log('PASSED'); // logs "passed" msg successfully
    var newUser = new User({
        name: name,
        email: email,
        phone: phone,
        password: password2
    });

    User.createUser(newUser, function (err, user) {
        if (err) throw err;
        console.log(user);
    });

    req.flash('success_msg', 'You had been succesfully registered! Try signin.');
    res.redirect('/users/signin');
}

models/user.js

var mongoose = require('mongoose');
var bcrypt = require('bcrypt');

var UserScheme = mongoose.Schema({
    name: {
        type: String,
        index: true
    },
    email: {
        type: String
    },
    phone: {
        type: String
    },
    password: {
        type: String
    }
});

var User = module.export = mongoose.model('User', UserScheme);

// encrypting password into hash
module.export.createUser = function(newUser, callback){
    bcrypt.genSalt(saltRounds, function(err, salt) {
        bcrypt.hash(newUser.password, salt, function(err, hash) {
            newUser.password = hash;
            newUser.save(callback);
        });
    });
};

如果需要更多代码,我可以更新帖子。

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    您需要将module.export 更改为module.exports

    node docs here * 请注意,exports 是指向 module.exports 的快捷方式。 module.exports 是需要模块时返回的默认对象。在您的示例中,您创建了一个名为 export 的模块的新属性。 here is a blog post 描述了exports和module.exports的关系。

    考虑以下示例:

    stack: cat ./49275169.js
    console.log('export', module.export)
    console.log('exports', module.exports)
    
    stack: node ./49275169.js 
    export undefined
    exports {}
    
    stack: 
    

    这是一个猫鼬的例子:

    stack: cat module.js 
    
    const mongoose = require('mongoose')
    const Schema = mongoose.Schema
    
    const schema = new Schema({ name: String })
    const User = module.exports = mongoose.model('Users', schema)
    
    module.exports.createUser = function (newUser, callback) {
      console.log(new User({ name: 'Rohit' }))
    }
    
    stack: cat ./49275169.js 
    
    const mongoose = require('mongoose')
    const User = require('./module')
    
    mongoose.connect('mongodb://localhost/test')
    
    const user = new User({
      name: 'Branford'
    })
    
    user.save((err, doc) => {
      if (err) { return console.error(err) }
      mongoose.connection.close()
      return console.log(doc)
    })
    
    User.createUser()
    
    stack: node ./49275169.js 
    
    { name: 'Rohit', _id: 5aa9138819d660182938b128 }
    { name: 'Branford', _id: 5aa9138819d660182938b127, __v: 0 }
    stack: 
    

    【讨论】:

    • 谢谢,我只是一个初学者。现在我明白为什么它说“TypeError”了:)干杯。
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 2021-02-06
    • 2017-03-09
    • 2019-05-09
    • 2017-08-02
    • 2018-06-14
    • 1970-01-01
    • 2019-08-14
    相关资源
    最近更新 更多