Модель Sequelize не возвращается в блоке - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь вернуть результаты обратно на мой контроллер, если секвелизация правильно обновила строку.Это работает в текущем коде, но я могу только возвратить true, если это не удалось или работает.

Я пробовал несколько другим способом, который, как я думал, может работать, но все возвращает неопределенное в контроллере, если я не жестко кодирую "возвращает true "

Контроллер

const {promisify} = require('util');
const pageSection = promisify(db.pageSection);

exports.updateForm = async function (req, res) {

let result;

try {
   result = await pageSection.updateSection(req);
} catch (err) {
    console.log('** NOT GOOD **', err);
}

   return res.send(result);
}

Модель

pageSection.updateSection = function (req) {

    var result;

    pageSection.update ({
        title: req.body.title,
        description: req.body.description,
        icon: req.body.icon
    }, {
        where: {
            id: req.body.id
        }
    })
    .then( updatedRow => {  
        return updatedRow; //Undefined in controller

        sendResult( updatedRow ); //Still undefined

        result = updatedRow; // Still undefined
    })
    .catch(err => {
        console.log('Page Model Error: ', err);
    })

    function sendResult ( updatedRow ) {
       if ( updatedRow ) { return true }

    } //Returns undefined

    return true; //Only thing that works

    return result; //Undefined


}

1 Ответ

0 голосов
/ 18 октября 2018

(Если вы используете postgres) Вам нужно добавить

returning: true,
plain: true

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

Так что теперь это будет выглядеть так:

pageSection.update ({
        title: req.body.title,
        description: req.body.description,
        icon: req.body.icon
    }, {
        where: {
            id: req.body.id
        },
        returning: true,
        plain: true
    })

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

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