StrongLoop ACL表不存在

时间:2015-09-09 18:45:53

标签: node.js acl strongloop

我成功从我的数据库中生成了所有模型。然后,我通过执行'node'来运行api。 我能够看到我的所有Web服务,但是当我尝试尝试服务时,有一个500错误告诉我没有ACL表。 所以,我打开了model-config.json,我看到之前没有创建过4个模型(User,AccessToken,ACL,RoleMapping和Role)。 我想知道我的数据库中是否存在所有这些模型。你知道我必须在每张桌子上放置哪些属性吗? 提前谢谢你。

Error:
{
  "error": {
    "name": "Error",
    "status": 500,
    "message": "ER_NO_SUCH_TABLE: Table 'sed.ACL' doesn't exist",
    "code": "ER_NO_SUCH_TABLE",
    "errno": 1146,
    "sqlState": "42S02",
    "index": 0,
    "stack": "Error: ER_NO_SUCH_TABLE: Table 'sed.ACL' doesn't exist\n [...]"
  }
}

2 个答案:

答案 0 :(得分:4)

您需要自己迁移

  1. 按照Attaching models to data sources中的基本步骤从内存数据源更改为您要使用的数据库。
  2. 使用以下内容创建server/create-lb-tables.js文件:
  3. var server = require('./server'); var ds = server.dataSources.db; var lbTables = ['User', 'AccessToken', 'ACL', 'RoleMapping', 'Role']; ds.automigrate(lbTables, function(er) { if (er) throw er; console.log('Loopback tables [' - lbTables - '] created in ', ds.adapter.name); ds.disconnect(); });

    1. 手动运行脚本:
    2. $ cd server

      $ node create-lb-tables.js

      For further details see loopback Documentation

答案 1 :(得分:0)

var server = require('./server');
    var ds = server.dataSources.db;
    var lbTables = ['User', 'AccessToken', 'ACL', 'RoleMapping', 'Role'];
    ds.automigrate(lbTables, function(er) {
        if (er) throw er;
        console.log('Loopback tables [' - lbTables - '] created in ', ds.adapter.name);
        ds.disconnect();
    });

这里 var ds = server.dataSources.db;

db是您在 datasource.json 中使用的数据库名称。

数据库连接字符串:

{
  "db": {
    "name": "db",
    "connector": "memory"
  },
  "inventory": {
    "host": "localhost",
    "port": 3306,
    "url": "",
    "database": "inventory",
    "password": "root",
    "name": "inventory",
    "user": "root",
    "connector": "mysql"
  }
}

这是我的数据库名称:

"database": "inventory"

上标代码是

var server = require('./server');
    var ds = server.dataSources.inventory;
    var lbTables = ['User', 'AccessToken', 'ACL', 'RoleMapping', 'Role'];
    ds.automigrate(lbTables, function(er) {
        if (er) throw er;
        console.log('Loopback tables [' - lbTables - '] created in ', ds.adapter.name);
        ds.disconnect();
    });

使用node filename.js在目录中使用独立保存的文件拍摄此代码 而且有效。