Как зациклить лимит и смещение запроса к БД, а также как сгенерировать цикл и сравнить данные из другой БД - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть два БД dataSet.По сути, это внутренняя БД, а другая БД - Клиентская БД, и я новичок в JS и кодировании.Я хочу сравнить, выполнив несколько запросов на выборку, если оба набора данных синхронизированы.

Я подключился к обеим базам данных и выполнил запрос на выборку для обеих БД.в настоящее время у меня есть жестко закодированные смещение и ограничение (нужна помощь в том, как я могу пойти дальше и поставить запрос в цикле до тех пор, пока «Нет данных для отображения сообщения»).Как только это будет сделано, первый результат БД содержит детали идентификатора, необходимо ввести идентификатор во второй Запрос и сравнить результат с первым результатом БД.

Функция подключения к БД

import {ConnectionOptionsReader, getConnectionManager} from "typeorm";

export async function getDBConnection(dbName: any){
    const createConnectionOptions = await new ConnectionOptionsReader().get(dbName);
    const connection = await getConnectionManager().create(createConnectionOptions).connect();
    return connection;
}

Контрольный пример -

import {getDBConnection} from "../utils/createDBConnection";

test("", async () => {
jest.setTimeout(100000);

const connectionDB = await getDBConnection("default");

<Want to loop Offet and Limit until the query triggers no data to show>
const Query1 = await connectionDB.manager.query("SELECT v.id AS id, t.published AS publisedDate,t.updated AS lastDate, d.description AS summary FROM db.user v INNER JOIN db.descriptions d ON v.id = d.id INNER JOIN db.time_latency t ON t.id = v.id WHERE DATE(v.created) < '2015-04-02' AND v.user_id = '111' limit 1000 offset 1");

Result dataset displays in below format for DB1 - 
[ RowDataPacket {
        id: '111',
        publisedDate: 2003,
        lastModifiedDate: 2003,
        summary: 'Hello' },
      RowDataPacket {
        id: '222',
        publisedDate: 1999,
        lastModifiedDate: 1999,
        summary: 'hi' },
      RowDataPacket {
        id: '333',
        publisedDate: 1998,
        lastModifiedDate: 2012,
        summary: 'bye' },
      RowDataPacket {
        id: '444',
        publisedDate: 1998,
        lastModifiedDate: 1998,
        summary: 'ola' }
]

Мне нужно выбрать все идентификаторы из набора данных выше и добавить их ниже. Выберите запрос к базе данных (v.id)

const connectionDB2 = await getDBConnection("db2");
const Query2 = await connectionDB2.manager.query("SELECT id, publishedDate, lastModifiedDate, summary FROM apr.V WHERE apr.V.v = "+v.id+");

когда я вставляю указанный выше идентификатор, скажем, 444 в запрос выше, результат -

[ RowDataPacket {
        id: '444',
        publisedDate: 1998,
        lastModifiedDate: 1998,
        summary: 'ola' }
]

После получения результата мне нужно сравнить

DB 1                            with DB2 - 
id = 444                      id = 444
publisedDate= 1998               publisedDate= 1998 
lastModifiedDate: 1998          lastModifiedDate: 1998 
summary=ola                    summary=ola

если summary = ola в DB1 и Summary = OLLA в DB2, тогда должно быть напечатано сообщение для этого идентификатора, это неверно.

await connectionDB.close();
await connectionDB2.close();
})

...