Loopbackjs 将内置模型迁移到数据库

Loopbackjs 将内置模型迁移到数据库,loopbackjs,strongloop,Loopbackjs,Strongloop,如何移动内置模型,如用户、角色、用户角色映射等。。。到我们创建的数据库,而不是默认的数据源:db?内置模型未在Arc中列出 我尝试创建一个继承这些基本模型的新模型。但是,数据不会保存到新模型中 请告诉我…我已经坐在上面好几个星期了。谢谢默认的“db”数据源放在内存中。这就是重新启动应用程序后数据不会持久化的原因。您必须安装适当的数据库连接器,然后必须在server/datasources.js中为数据库添加数据源 若您使用“slc loopback”命令创建了应用程序,那个么您的数据源只包含内

如何移动内置模型,如用户、角色、用户角色映射等。。。到我们创建的数据库,而不是默认的数据源:db?内置模型未在Arc中列出

我尝试创建一个继承这些基本模型的新模型。但是,数据不会保存到新模型中

请告诉我…我已经坐在上面好几个星期了。谢谢

默认的“db”数据源放在内存中。这就是重新启动应用程序后数据不会持久化的原因。您必须安装适当的数据库连接器,然后必须在server/datasources.js中为数据库添加数据源

若您使用“slc loopback”命令创建了应用程序,那个么您的数据源只包含内存连接器。检查datasources.js文件,您将看到如下内容:

{
  "db": {
  "name": "db",
  "connector": "memory"
  }
}
例如,如果要将数据持久化到postgresql数据库中(对于任何受支持的连接器,过程几乎相同),则必须使用数据库信息扩展datasoruces.json文件:

{
  "db": {
  "name": "db",
  "connector": "memory"
  },

  "mydata": {
    "host": "db_host",
    "database": "your_database_name",
    "username": "your_db_username",
    "password": "your_db_password",
    "connector": "postgresql"
  }
}
您还可以使用“slc loopback:datasource”命令来执行此操作。向导将帮助您定义数据源。别忘了安装db连接器

npm install loopback-connector-postgresql
最后要做的是将数据源分配给所需的模型。您可以使用向导(请参阅slc loopback:model命令)执行此操作,也可以手动编辑server/model-config.json文件

{
  "User": {
    "dataSource": "mydata",
    "public": true
  },
  "AccessToken": {
    "dataSource": "mydata",
    "public": false
  },
  "ACL": {
    "dataSource": "mydata",
    "public": false
  },
  "RoleMapping": {
    "dataSource": "mydata",
    "public": false
  },
  "Role": {
    "dataSource": "mydata",
    "public": false
  }
}
更新 您可以尝试使用此代码段从模型更新表。把他的代码放在server/server.js的某个地方

var appModels = ['User', 'AccessToken', 'ACL', 'RoleMapping', 'Role'];

var ds = app.dataSources.mydata;
ds.isActual(appModels, function(err, actual) {
  if (!actual) {
    ds.autoupdate(appModels, function(err) {
      if (err) throw (err);
    });
  }
});
我建议您阅读strongloop页面上关于从模型创建/更新数据库架构的内容。请注意autoupdate和automigrate函数之间的区别


谢谢您的回复。我已经试过了。只有一个问题:我无法将其迁移到数据库。我尝试过使用Arc和cli命令。您能详细解释一下您尝试了什么吗?我用一些代码更新了答案,并链接到文档,您可以在其中阅读更多关于从模型更新架构的信息。哦,太棒了!成功了。我在您的更新中粘贴了代码,它起了作用。@LuisParada迁移,这里讨论的是数据库模式迁移。您应该询问另一个有关创建/迁移数据的问题。