Как сделать возвращаемые значения findOrCreate доступными для маршрутизатора - PullRequest
0 голосов
/ 19 апреля 2019

Так что в моем экспресс-приложении у меня есть отдельный файл database.js, который содержит все модели и функции для вставки, удаления, обновления и т. Д. У меня также есть отдельный контроллер для каждой модели.

database.js

module.exports = {
    createUser: function (username, email, password) {
        return sequelize.sync().then(function () {
            User.findOrCreate({
                where: {
                    username: name,
                    email: email
                },
                defaults: {
                    username: username,
                    password: password,
                    email: email
                }
            }).then(([user, created]) => {
                console.log(user.get({plain:true}));
                console.log(created)
                });
            });
        }
    };

Контроллеры / user.js

const database = require("../database.js");
module.exports = {
    register: function (req, res) {
        database.createUser(req.body.username, req.body.email, req.body.password);
        res.json({...
        })

    }
};

Итак, в основном я хочу получить объект пользователя и логическое значение, которое сообщает мне, был ли он создан на маршрутизаторе, чтобы я мог проверить, был ли создан пользователь, и сделать соответствующий ответ.

1 Ответ

1 голос
/ 19 апреля 2019

Вы можете удалить then в createUser и разрешить Promise при вызове функции:

module.exports = {
    createUser: function (username, email, password) {
        return User.findOrCreate({
                where: {
                    username: name,
                    email: email
                },
                defaults: {
                    username: username,
                    password: password,
                    email: email
                }
            })
    };

Затем обещание преобразуется в массив с пользовательским объектом и логическим значением, которое вы ищете

const database = require("../database.js");
module.exports = {
    register: function (req, res) {
        database.createUser(req.body.username, req.body.email, req.body.password)
            .then((result) => {
                const [ object, created ] = result;
                res.json({ user_is_created: created })
            })
    }
};

Это не полное решение, вам, возможно, придется изучить крайние случаи и ошибки, но в основном вы так и сделаете.

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