Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- /*
- Example of mongoose usage and example of User model
- */
- let mongoose = require('mongoose');
- mongoose.Promise = global.Promise;
- let host = '127.0.0.1';
- let port = 27017;
- let database = 'testdb';
- let url = `mongodb://${host}:${port}/${database}`;
- mongoose.connect(url);
- let bcrypt = require('bcrypt');
- let Schema = mongoose.Schema({
- name: {
- type: String,
- required: true
- },
- email: {
- type: String,
- unique: true,
- required: true
- },
- password: {
- type: String,
- required: true
- }
- });
- Schema.methods.comparePassword = function(password, cb) {
- const user = this;
- bcrypt.compare(password, user.password, (err, isMatch) => {
- if (err) {
- throw err;
- }
- if (!isMatch) {
- console.log('Password incorrect');
- return false;
- }
- console.log('Password is correct');
- return true;
- })
- }
- Schema.pre('save', function(next) {
- const user = this;
- bcrypt.genSalt((err, salt) => {
- if (err) {
- throw err;
- }
- bcrypt.hash(user.password, salt, (err, encrypted) => {
- if (err) {
- throw err;
- }
- user.password = encrypted;
- next();
- })
- })
- })
- let validateError = (err, cb) => {
- if (err.name == 'MongoError' && err.code == 11000) {
- console.log(`${err.name}[${err.code}]: ${err.message}`);
- }
- cb();
- }
- let User = mongoose.model('User', Schema);
- let testUser = new User({
- name: 'Test User',
- email: 'test.user3@localhost',
- password: 'myPASSWoRd123'
- });
- testUser.save((err, user) => {
- if (err) {
- return validateError(err, () => {
- mongoose.connection.close();
- });
- }
- console.log(`User ${user.name} with email ${user.email} was saved successfully`);
- User.findOne({email: user.email}, (err, user) => {
- if (err) {
- return validateError(err, () => {
- mongoose.connection.close();
- })
- }
- user.comparePassword('myPASSWoRd1233');
- mongoose.connection.close();
- })
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement