Loopback получить модель из источника данных с DiscoverSchemas - PullRequest
0 голосов
/ 20 декабря 2018

Я тестирую loopback уже пару часов, и все работает нормально, когда я вручную создаю модели и изменяю созданный файл model.json, чтобы он соответствовал имени моего столбца oracleDb.

Но я получаюзастрял, когда я хочу получить модель из моего оракула БД, чтобы избежать записи 50 столбцов вручную .. Я сделал тест с таблицей под названием "atest" и содержит столбцы "имя" и "идентификатор".Создайте atest.json и добавьте его в model-config.json:

"Atest": {"dataSource": "oracledb", "public": true}

Но вмой atest.json есть просто "undefined" ..

Мой файл Discover-models.js:

'use strict';

const loopback = require('loopback');
const promisify = require('util').promisify;
const fs = require('fs');
const writeFile = promisify(fs.writeFile);
const readFile = promisify(fs.readFile);
const mkdirp = promisify(require('mkdirp'));

const DATASOURCE_NAME = 'oracledb';
const dataSourceConfig = require('./server/datasources.json');
const db = new loopback.DataSource(dataSourceConfig[DATASOURCE_NAME]);

discover().then(
  success => process.exit(),
  error => { console.error('UNHANDLED ERROR:\n', error); process.exit(1); },
);

async function discover() {
  // It's important to pass the same "options" object to all calls
  // of dataSource.discoverSchemas(), it allows the method to cache
  // discovered related models
  const options = { relations: false };

  // Discover models and relations
  const atestSchemas = await db.discoverSchemas('ATEST', options);

  // Create model definition files
  await mkdirp('common/models');
  var response = await writeFile(
    'common/models/atest.json',
    JSON.stringify(atestSchemas['ATEST'], null, 2)
  );
  console.log(response);
  // Expose models via REST API
  const configJson = await readFile('server/model-config.json', 'utf-8');
  console.log('MODEL CONFIG', configJson);
  const config = JSON.parse(configJson);
  config.Atest = { dataSource: DATASOURCE_NAME, public: true };

  await writeFile(
    'server/model-config.json',
    JSON.stringify(config, null, 2)
  );
}

Мое соединение оракула работает нормально, я его не понимаю,есть идеи?

1 Ответ

0 голосов
/ 20 декабря 2018

Добавьте console.log после того, как вы вызовете discoverSchemas:

// Discover models and relations
const atestSchemas = await db.discoverSchemas('ATEST', options);
console.log(atestSchemas);

Вы должны увидеть, что ключ - это не просто 'ATEST', на что ссылается позже atestSchemas ['ATEST'].Ключ «SCHEMA_NAME.ATEST» (SCHEMA_NAME зависит от вашей среды).

Если вы нажмете на соответствующую клавишу, вы должны получить то, что искали.

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