StrongLoop ACL table 不存在
StrongLoop ACL table doesn't exist
我成功地从我的数据库生成了我所有的模型。然后,我 运行 api 通过执行 'node .'
我能够看到我所有的 Web 服务,但是当我尝试尝试服务时,出现 500 错误,告诉我没有 ACL table。
所以,我打开 model-config.json,我看到有 4 个我之前没有创建的模型(User、AccessToken、ACL、RoleMapping 和 Role)。
我想知道我的数据库中是否必须存在所有这些模型。你知道我必须在每个 table 中放入哪些属性吗?
提前谢谢你。
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 [...]"
}
}
您需要自己自动迁移这些表。参见:
https://groups.google.com/forum/#!searchin/loopbackjs/automigrate$20default$20tables/loopbackjs/IiapgVVf-NQ/32yeCnNxBmIJ
您需要自己迁移它们
- 按照Attaching models to data sources中的基本步骤从内存数据源更改为您要使用的数据库。
- 使用以下内容创建
server/create-lb-tables.js
文件:
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();
});
- 运行 手动脚本:
$ cd server
$ node create-lb-tables.js
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
目录中的独立保存文件拍摄此代码
并且有效。
我成功地从我的数据库生成了我所有的模型。然后,我 运行 api 通过执行 'node .' 我能够看到我所有的 Web 服务,但是当我尝试尝试服务时,出现 500 错误,告诉我没有 ACL table。 所以,我打开 model-config.json,我看到有 4 个我之前没有创建的模型(User、AccessToken、ACL、RoleMapping 和 Role)。 我想知道我的数据库中是否必须存在所有这些模型。你知道我必须在每个 table 中放入哪些属性吗? 提前谢谢你。
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 [...]"
}
}
您需要自己自动迁移这些表。参见:
https://groups.google.com/forum/#!searchin/loopbackjs/automigrate$20default$20tables/loopbackjs/IiapgVVf-NQ/32yeCnNxBmIJ
您需要自己迁移它们
- 按照Attaching models to data sources中的基本步骤从内存数据源更改为您要使用的数据库。
- 使用以下内容创建
server/create-lb-tables.js
文件:
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();
});
- 运行 手动脚本:
$ cd server
$ node create-lb-tables.js
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
目录中的独立保存文件拍摄此代码
并且有效。