使用发现架构从数据源环回获取模型



我已经测试环回几个小时了,当我手动创建模型并修改创建的 model.json 以匹配我的 oracleDb 列名称时,一切都运行良好。

但是当我想从我的 oracle db 获取模型以避免手动编写 50 列时,我陷入了困境。我用一个名为"atest"的表做了一个测试,其中包含一个列"name"和"id"。它创建了 atest.json ,并将其添加到 model-config.json 中:

"测试":{ "数据源": "oracledb", "公共":真 }

但是在我的atest.json中只有一个"未定义"。

我的发现模型.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)
  );
}

我的预言机连接工作正常,我不明白,知道吗?

在调用 discoverSchemas 后添加一个console.log

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

您应该看到该键不仅仅是"ATEST",正如后面用 atestSchemas['ATEST'] 引用的那样。关键是"SCHEMA_NAME。ATEST"(SCHEMA_NAME将根据您的环境而有所不同)。

如果您定位适当的密钥,则应获得所需的内容。

最新更新