我是Loopback的新手,我刚刚开始实施本教程 https://docs.strongloop.com/display/public/LB/Connect+your+API+to+a+data+source
但我收到错误:
[error: relation "public.acl" does not exist].
我搜索了很多,但无法找到解决方案。请帮我解决这个问题。感谢..
答案 0 :(得分:11)
正如doc https://docs.strongloop.com/display/public/LB/Creating+database+tables+for+built-in+models中所解释的,Loopback不会自动从模型迁移(创建)表 - 包括内置模型。
正如链接所示,为了使用其他数据源而不是内存中的db,我们应该创建一个单独的脚本server/create-lb-tables.js
:
var server = require('./server');
var ds = server.dataSources.postgresDS;
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();
});
其中postgresDS
是server/datasources.json
中数据源的名称。
最后,运行脚本来迁移表:
$ cd server
$ node create-lb-tables.js
答案 1 :(得分:-1)
另一个解决这个问题的方法是使用来自相应数据源的autoMigrate方法而不必手动创建postgres中的表。
例如,如果您的数据源被称为存储,您将具有以下内容:
./服务器/引导/ migrateTables.js
module.exports = migrateTables;
function migrateTables(server) {
var storage = server.datasources.storage;
storage.automigrate();
}
请注意,迁移表后,您将需要禁用此引导脚本,因为它将删除现有数据库。您可以通过简单地注释第一行并将其保留在角落以便重新使用,以防您需要创建表格。