Только что началось с узла, экспресс и Mongoose.Mongoose save не работает
Mongoose версия: 4.1.3
Вот моя модель
var mongoose = require('mongoose'),
bcrypt = require('bcrypt'),
ObjectId = mongoose.Schema.Types.ObjectId,
Timestamp = global.requireLib('timestamp');
var UserSchema = mongoose.Schema({
email: {type: String, required: true, unique: true},
password: {type: String, required: true},
first_name: {type: String},
last_name: {type: String},
username: {type: String, unique: true},
role: {type: String, required: true, default: 'user'},
created_at: {type: Number, required: true, default: Timestamp.now()},
updated_at: {type: Number, required: true, default: Timestamp.now()}
});
UserSchema.methods.hashPassword = function() {
salt = bcrypt.genSaltSync(13);
this.password = bcrypt.hashSync(this.password, salt);
}
UserSchema.methods.validate = function (password) {
return bcrypt.compareSync(password, this.password);
}
var User = mongoose.model('User', UserSchema, 'users');
module.exports = User;
Вот 'контроллер' метод:
create: function (req, res) {
User.findOne({email: req.body.email}, function (err, user) {
if (err) {
res.error('UnknownError');
} else if (!user) {
user = new User(req.body);
user.hashPassword();
user.save(function (err) {
if (err) {
res.error('UnknownError');
} else {
res.success({id: user.id});
}
});
} else {
res.error('EmailExists');
}
});
},
Запрос:
curl -X POST -H 'Content-type: application/json' -d '{"email": "[email protected]", "password": "123"}' http://localhost:3000/users
маршрутизации работы отлично, если я добавлю консоль. log() в начале функции create, я увижу его в консоли. Если я сделаю console.log (user.save) - я буду se, что это функция. Но там нигде нет записи MongoDB. Обновление работает нормально, если я обновляю с помощью upsert - это нормально.
Осталось: 6 часов, не можете найти ошибку.
Fyi * Date.now * также работает по умолчанию метки времени :) –
@ThomasBormans спасибо) –
вы решить эту проблему, в конце концов? У меня такая же. – Stefan