Невозможно создать пользователя с помощью Postman - приложение Nodemon Crashed - PullRequest
0 голосов
/ 19 ноября 2018

JS и в фазе обучения.Я попытался создать нового пользователя, сохранив его в базе данных, используя mongodb.Но когда я пытался опубликовать данные с помощью POSTMAN, я получаю следующую ошибку:

Не удалось получить ответ.Произошла ошибка при подключении к http://localhost:3000/create-user

Также произошел сбой Nodemon, показывая сбой приложения [nodemon] - ожидание изменений файла перед запуском ...

Я вручную запустил файл и проверил, но когдапопытался опубликовать данные, соединение было потеряно и прервано.

Ниже приведен файл server.js:

const express = require('express');
const morgan = require('morgan');
const mongoose = require('mongoose');

var User = require('./models/user');

const app = express();

mongoose.connect('mongodb://test:check123@ds211694.mlab.com:11694/parpet',  { useNewUrlParser: true }, (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log('Connected Successfully');
    }
})
// Middleware for log data
app.use(morgan('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.post('/create-user', (req, res) => {
    var user = new User();
    user.profile.name = req.body.name;
    user.email = req.body.email;
    user.password = req.body.password;
    user.save(function (err) {
        console.log('checking.....');
        if(err) {
            console.log('Error');
        } else {
            res.json('Successfully created a new user');
        }
    });
});

const port = process.env.PORT  || 3000;

app.listen(port, (err) => {
    if(err) throw err;
    console.log(`Server listening on port ${port}`);
});

И файл модели

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

var Schema = mongoose.Schema;

/* Creating User Schema */
var UserSchema = new Schema({
    email: {
        type: String,
        unique: true,
        lowercase: true
    },
    password: String,
    profile: {
        name: {
            type: String,
            default: ''
        },
        picture: {
            type: String,
            default: ''
        }
    },
    address: String,
    history: [{
        date: Date,
        paid: {
            type: Number,
            default: 0
        },
        // item: 
    }]
});

/* Hash the password */
UserSchema.pre('save', function (next) {
    var user = this;
    if(!user.isModified('password')) {
        return next();
    }
    bcrypt.genSalt(10, function (err, salt) {
        if(err) return next(err);
        bcrypt.hash(user.password, salt, null, function (err, hash) {
            if(err) return next(err);
            user.password = hash;
            next();
        });
    });
});

/* Comparing typed password with that in DB */
UserSchema.methods.comparePassword = function (password) {
    return bcrypt.compareSync(password, this.password);
}

module.exports = mongoose.model('User', UserSchema);

Я пыталсяотключение ssl-соединений, как указано в других вопросах stackoverflow, но это не помогло.

Так что кто-нибудь может помочь мне разобраться.Это было бы очень полезно.

node --version    = v8.9.3
npm --version     = 6.4.1
nodemon --version = 1.17.5
express --version = 4.16.0

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Я столкнулся с той же проблемой, но решил ее путем понижения пакета bcrypt до 2.0.1.

0 голосов
/ 19 ноября 2018

Похоже, что этот вызов bcrypt тихо завершается:

bcrypt.hash(user.password, salt, null, function (err, hash) {

Я не уверен, откуда появился параметр null.Если вы удалите его:

bcrypt.hash(user.password, salt, function (err, hash) {

Он больше не падает и не возвращает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...