Tôi tiếp tục gặp sự cố newUser.save() không phải là một hàm. Đây là một chức năng mongoose mà tôi đã sử dụng trước đây. Tôi yêu cầu mongoose chính xác và không chắc chắn lý do tại sao lỗi này xảy ra. Bất kỳ trợ giúp được hoan nghênh..save() không phải là Hàm Mongoose
Các lỗi tôi nhận được là TypeError: newUser.save is not a function
user.js My bên trong thư mục Models
var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
name: String,
email: String,
password: String,
info: String
});
var User = module.exports = mongoose.model('User', UserSchema);
module.exports.createUser = function(newUser, callback){
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(newUser.password, salt, function(err, hash) {
newUser.password = hash;
newUser.save(callback);
});
});
}
module.exports.getUserByUsername = function(username, callback){
User.findOne({username : username}, callback);
}
module.exports.getUserById = function(id, callback){
User.findById(id, callback);
}
module.exports.checkPassword = function(candidatePass, hash, callback){
bcrypt.compare(candidatePass, hash, function(err, res) {
if(err) throw err;
callback(null, res);
});
}
users.js My bên trong đường Thư mục
//Mongoose Setup
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect("MY_DB");
var path = require('path');
var appDir = path.dirname(require.main.filename);
var bodyParser = require('body-parser')
var User = require('../models/user.js');
//Express Setup
var express = require('express');
var router = express.Router();
var app = express();
var expressValidator = require("express-validator");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(expressValidator());
app.use(bodyParser.json());
//Routes
router.get('/register', function(req, res){
res.sendFile(appDir + "/views/register.html");
})
router.post('/register', function(req, res) {
req.check('name', 'Name must be Filled in').notEmpty();
req.check('email', 'Email must be Filled in').notEmpty();
req.check('email', "Invalid Email").isEmail();
req.check('password', 'Password Field must be Filled in').notEmpty();
req.check('password', 'Passwords do not Match').equals(req.body.password2)
var errors = req.validationErrors();
if(errors) res.send(errors)
else{ User.createUser({
name: req.body.name,
email: req.body.email,
password: req.body.password,
info: req.body.user_bio
}, function(){
console.log('User Created');
})
}
})
//Exports
module.exports = router;
Tôi đã tham khảo https://github.com/bradtraversy/loginapp/blob/master/models/user.js trong khi viết mã của tôi. Tại sao điều này sẽ làm việc và tôi không? –
Kiểm tra [cách mã đó được sử dụng] (https://github.com/bradtraversy/loginapp/blob/master/routes/users.js#L41-L51). Nó khởi tạo một người dùng mới đầu tiên và chuyển nó tới 'createUser'. Nhưng tbh, code-khôn ngoan rằng dự án không nhìn tất cả những gì tuyệt vời. Đối với một, nó không sử dụng các công cụ mà Mongoose cung cấp (giống như các phương thức tĩnh mà tôi đã gọi trong câu trả lời của tôi). – robertklep