Консольный вывод в пн goose обещание не работает - PullRequest
1 голос
/ 15 марта 2020

Я просто работаю над проектом анализа. У меня есть метод создания в узле, но я не знаю, почему вдруг это происходит. Я успешно подключился к базе данных. и написал успешно созданную модель mon goose. Нижеприведенный код promise.then() не посещен. документ не создан. но если я удалил любое обязательное поле, он выдает ошибку, как и ожидалось.

мой метод создания:

create: function (doc) {
        return new Promise((resolve, reject) => {
            bcrypt.hash(doc.password, saltRounds).then((hash) => {
                doc.password = hash;
                console.log(doc); //works
                Account.create(doc).then((account) => {
                    console.log(account); //not working, no error, successful execution, code exit 0.
                    resolve(account);
                }).catch((err) => {
                    console.log(account); //nothing printed
                    reject(err);
                });
            }).catch(err => {
                console.log(account); //nothing printed
                reject(err);
            });
        });
    }

мое подключение к базе данных в базе данных / дБ. js

const mongoose = require('mongoose');
require('dotenv').config();

const database = {
    connect: function () {
        mongoose.connect(
            process.env.MONGO_URI + '?retryWrites=true',
            { useNewUrlParser: true, useUnifiedTopology: true }
        ).then(
            function () {
                console.log('database connected successfully');
            }).catch(error => {
            console.log(error);
        });
    }
};

module.exports = database;

Весь мой код контроллера контроллеров / аккаунта. js:

Account = require('../models/account');
const bcrypt = require('bcrypt');
const saltRounds = 10;

authController = {
    create: function (doc) {
        return new Promise((resolve, reject) => {
            bcrypt.hash(doc.password, saltRounds).then((hash) => {
                doc.password = hash;
                let promise = Account.create(doc);
                promise.then((account) => {
                    console.log(account);
                    resolve(account);
                }).catch((err) => {
                    console.log(err);
                    reject(err);
                });
            }).catch(err => {
                console.log(err);
                reject(err);
            });
        });
    },
    show: function (email) {
        return new Promise((resolve, reject) => {
            let filter = {email: email};
            Account.findOne(filter).then((account) => {
                resolve(account);
            }).catch((err) => {
                reject(err);
            });
        });
    },
    update: function (id, update) {
        return new Promise((resolve, reject) => {
            let filter = {_id: id};
            Account.findOneAndUpdate(filter, update).then((account) => {
                resolve(account);
            }).catch((err) => {
                reject(err);
            });
        });
    },
    destroy: function (id) {
        return new Promise((resolve, reject) => {
            let filter = {_id: id};
            Account.findOneAndDelete(filter).then(() => {
                resolve({deleted: true});
            }).catch((err) => {
                reject(err);
            });
        });
    },
    compare: function (doc) {
        return new Promise((resolve, reject) => {
            let filter = {email: doc.email};
            Account.findOne(filter).then(user => {
                bcrypt.compareSync(doc.password, user.password).then((result) => {
                    resolve(result);
                }).catch((err) => {
                    reject(err);
                });
            }).catch((err) => {
                reject(err);
            });
        });
    }
};


module.exports = authController;

Моя модель для аккаунта в моделях / аккаунте. js:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const accountSchema = new Schema({
        first: {
            type: String,
            required: true
        },
        last: {
            type: String,
            required: false
        },
        email: {
            type: String,
            required: true,
            unique: true
        },
        password: {
            type: String,
            required: true
        },
        role: {
            type: String,
            required: true
        },
        boards: [{
            type: mongoose.Schema.Types.ObjectId, ref: 'Board',
            required: false
        }]
    },
    {
        timestamps: true
    });

Account = mongoose.connection.model('User', accountSchema);
module.exports = Account;

мой тест. js код:

const accountCtrl = require('./controllers/account');
const account = {
        first: "User 1",
        last: "Last 1",
        email: "email1@tasks.com",
        password: "password",
        role: "test",
    };

accountCtrl.create(account).then((result) => {console.log(result)}).catch((err) => {console.log(err)});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...