【问题标题】:Migrating built-in models to Databases将内置模型迁移到数据库
【发布时间】:2015-07-10 13:57:18
【问题描述】:

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

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

请指教...我已经坐了几个星期了。谢谢

【问题讨论】:

    标签: loopbackjs strongloop


    【解决方案1】:

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

    http://docs.strongloop.com/display/public/LB/Connecting+models+to+data+sources

    如果您使用“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
      }
    }
    

    更新 您可以尝试使用此代码 sn-p 从模型更新您的表。将他的代码放在 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 函数的区别

    http://docs.strongloop.com/display/public/LB/Creating+a+database+schema+from+models

    【讨论】:

    • 感谢您的回复。我已经试过了。只有一个问题:我无法将它迁移到数据库。我试过使用 Arc 和 cli 命令。
    • 你能更详细地解释你尝试了什么吗?
    • 我已经用一些代码和文档链接更新了答案,您可以在其中阅读有关从模型更新架构的更多信息。
    • 哦,太好了!有效。我将代码粘贴到您的更新中,它有效。
    • 此处讨论的 @LuisParada 迁移是关于数据库模式迁移的。您应该问另一个有关创建/迁移数据的问题。
    猜你喜欢
    • 2020-07-21
    • 2012-12-26
    • 2016-06-22
    • 2016-05-16
    • 2012-11-18
    • 2017-06-09
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多