坚持用户使用Strongloop Loopback

时间:2015-04-07 21:05:44

标签: loopbackjs strongloop

您如何将用户数据保留在生产中?有没有一种简单的方法来查找用户模型的模式,以便可以在数据库中重现?

(抢先注意:DiscoverSchema找到数据库的架构,而不是模型)

(另外,我知道文档说可以通过在默认的db数据源中设置文件属性来保持用户模型,但我对此有安全性,可伸缩性和持久性方面的考虑。)

4 个答案:

答案 0 :(得分:6)

  1. 设置数据库。
  2. 通过添加数据库编辑./server/datasources.json来定义新的数据源,例如:
  3. 
    
    "mongodb_dev": { 
        "name": "mongodb_dev",
        "connector": "mongodb",
        "host": "127.0.0.1", 
        "database": "devDB", 
        "username": "devUser", 
        "password": "devPassword", 
        "port": 27017 
      }
    
    
    

    1. 更新您的./server/model-config.json,让内置模型使用您的新数据源:
    2. 
      
      {
        "_meta": {
          "sources": [
            "loopback/common/models",
            "loopback/server/models",
            "../common/models",
            "./models"
          ],
          "mixins": [
            "loopback/common/mixins",
            "loopback/server/mixins",
            "../common/mixins",
            "./mixins"
          ]
        },
        "User": {
          "dataSource": "mongodb_dev"
        },
        "AccessToken": {
          "dataSource": "mongodb_dev",
          "public": false
        },
        "ACL": {
          "dataSource": "mongodb_dev",
          "public": false
        },
        "RoleMapping": {
          "dataSource": "mongodb_dev",
          "public": false
        },
        "Role": {
          "dataSource": "mongodb_dev",
          "public": false
        }
      }
      
      
      

      3.创建server / create-lb-tables.js文件,使用以下内容将内置表移动到数据库中

      
      
      var server = require('./server');
      var ds = server.dataSources.mongodb_dev;// <<<<<<note the datasource name
      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();
      });
      &#13;
      &#13;
      &#13;

      1. 运行脚本 cd server node create-lb-tables.js
      2. 这是关于在db上放置内置模型的官方文档的链接

        https://docs.strongloop.com/display/public/LB/Creating+database+tables+for+built-in+models

答案 1 :(得分:2)

您应该通过连接器将用户保留在您选择的数据库中。

file属性仅用于将数据持久保存到文件系统,不建议用于生产。对于生产,您应该使用其中一个连接器(MongoDB,MySQL等)来保存您的数据。

请参阅文档以了解哪些属性是内置用户模型的一部分,或更改默认数据库设置以将用户模型持久保存到文件系统,以查看JSON文件输出中可用的属性。如果您不理解这一切,请浏览tutorial series以了解所有这些概念。干杯。 ;)

答案 2 :(得分:0)

由于没有人真正分享如何实现这一点,我使用了来自strongloop的example-mysql repo并调整了2个文件来构建这个例子。

  • model-config.json(将内置模型从db更改为您的数据源)
  • bin / automigrate.js(为每个模型添加其他自动挂载功能)

请点击此处:https://github.com/mikesparr/loopback-example-users-to-mysql

祝你好运!

答案 3 :(得分:0)

  1. 使用slc loopback:dataSource
  2. 创建持久性(Mongo或任何其他)数据源
  3. 编辑model-config.json并提及上面创建的数据源。
  4. 重新启动服务器