Node.js и OracleDB. ВЫБЕРИТЕ объект из БД - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть таблица в oracle дБ, в которой есть столбец типа объекта.

create or replace type background as Object
(user_name varchar(64),user_url varchar(128),background_thumb varchar(252),background_regular varchar(252));

В моем node.js API у меня есть функция, которая получает все записи из таблицы, но у меня проблема с этим объектом:>

async function getAll(user) {
    user.user_id = parseInt(user.user_id, 10);
    const query = `SELECT
    BOARD_ID "board_id",
    NAME "name",
    t.background ...., ????
    IMPORTANT "important"
    from TO_DO_TABLE t
    WHERE USER_ID=:user_id`;

    const result = await database.simpleExecute(query, user);
    return result.rows;
}

module.exports.getAll = getAll;

Я хотел бы загрузить объект быть нормальным объектом, а не строкой или несколькими свойствами. Примерно так

{ board_id: 171, name: 'aaa', background: {.......}, important: 0 },

Я не знаю, как с этим справиться. Конечно, я мог бы получить все свойства отдельно в SELECT, а затем создать объект, но есть ли лучший способ?

EDIT

Когда я запускаю что-то подобное

async function getAll(user) {
    user.user_id = parseInt(user.user_id, 10);
    const query = `SELECT
    BOARD_ID "board_id",
    NAME "name",
    t.background "background" , 
    IMPORTANT "important"
    from TO_DO_TABLE t
    WHERE USER_ID=:user_id`;

    const result = await database.simpleExecute(query, user);
    return result.rows;
}

module.exports.getAll = getAll;

У меня есть эта ошибка Error: DPI-1010: not connected

Когда я запускаю что-то подобное, когда я выбираю объект по отдельности

async function getAll(user) {
    user.user_id = parseInt(user.user_id, 10);
    const query = `SELECT
    BOARD_ID "board_id",
    NAME "name",
    t.background.user_name "user_name" , 
    t.background.background_thumb "thumb" , 
    IMPORTANT "important"
    from TO_DO_TABLE t
    WHERE USER_ID=:user_id`;

    const result = await database.simpleExecute(query, user);
    return result.rows;
}

module.exports.getAll = getAll;

Это хорошо, но, как я писал ранее, я хотел бы выбрать весь фоновый объект как объект:>

    {
        "board_id": 171,
        "name": "aaa",
        "user_name": "aaa",
        "thumb": "adadad",
        "important": 0
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...