Loopback postgresql关系“public.acl”

时间:2016-03-09 07:21:59

标签: node.js loopbackjs

我是Loopback的新手,我刚刚开始实施本教程 https://docs.strongloop.com/display/public/LB/Connect+your+API+to+a+data+source

但我收到错误:

[error: relation "public.acl" does not exist].

我搜索了很多,但无法找到解决方案。请帮我解决这个问题。感谢..

2 个答案:

答案 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();
});

其中postgresDSserver/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();
}

请注意,迁移表后,您将需要禁用此引导脚本,因为它将删除现有数据库。您可以通过简单地注释第一行并将其保留在角落以便重新使用,以防您需要创建表格。