【问题标题】:Strongloop discovery model still emptyStrongloop 发现模型仍然为空
【发布时间】:2016-04-10 08:52:16
【问题描述】:

我正在使用 Strongloop 在 Node.js 中创建一个 RESTful API。我配置了数据库连接,连接测试没问题。

现在我正在尝试将我的模型从我的数据库导入到 Strongloop。我使用“发现模型”选项,但是当我单击它时会出现一个窗口,但表格仍然是空白的。

但是我确信我的数据库正在竞争很多表。 (我正在使用带有 Heroku 帐户的 ClearDB 数据库)

有人可以帮帮我吗?谢谢

【问题讨论】:

    标签: node.js heroku strongloop


    【解决方案1】:

    我发现我必须在这里定义我想发现的数据库

    ds.discoverModelDefinitions({ schema: 'YOUR-DB-NAME' }
    

    var _ = require('lodash');
    var path = require('path');
    var fs = require('fs');
    var loopback = require('loopback');
    
    var outputPath = path.resolve(__dirname, '../common/models');
    var ds = loopback.createDataSource('mysql', require('../server/datasources').local);
    
    ds.discoverModelDefinitions({ schema: 'YOUR-DB-NAME' }, function (err, models) {
    
        var count = models.length;
      
      _.each(models, function(model){
        ds.discoverSchema(model.name, {  associations: true }, function(err, schema){
          var outputName = outputPath + '/' +schema.name + '.json';
          fs.writeFile(outputName, JSON.stringify(schema, null, 2), function(err) {
            if(err) {
              console.log(err);
            } else {
              console.log("JSON saved to " + outputName);
            }
          });
          fs.writeFile(outputPath + '/' + schema.name + '.js', jsFileString(schema.name), function(err) {
            if (err) throw err;
            console.log('Created ' + schema.name + '.json file');
          });
          count = count - 1;
          if (count === 0) {
            console.log("DONE!", count);
            ds.disconnect();
            return;
          }
        });
      })
    });
    
    
    function capitaliseFirstLetter(string) {
        return string.charAt(0)
            .toUpperCase() + string.slice(1);
    }
    
    function jsFileString(model_name) {
        return '' + 'module.exports = function(' + capitaliseFirstLetter(model_name) + ') {\n' + '\t\n' + '};';
    }

    【讨论】:

    • 应该是schema: 'YOUR-SCHEMA-NAME'。创建数据源时提供数据库名称,即 ds as var ds = loopback.createDataSource('postgresql', { "host": "hostname", "port": 5432, "database": "testdb", "password": "password", "user": "username", });
    • @raevilman 在 mysql 中,如答案代码所示,模式和数据库是相同的。它不像 postgres
    猜你喜欢
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多