在 Strongloop 环回中保留用户

Persist Users in Strongloop Loopback

为了在生产环境中持久保存用户数据,您做了哪些工作?有没有一种简单的方法可以找到用户模型的模式,以便可以在数据库中复制它?

(抢先注:DiscoverSchema查找的是数据库的schema,不是model)

(另外,我知道文档说可以通过在默认数据库数据源中设置文件 属性 来保留用户模型,但我对此有安全性、可扩展性和持久性方面的担忧。)

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

文件属性 仅用于将数据保存到文件系统,不推荐用于生产。对于生产环境,您应该使用其中一种连接器(MongoDB、MySQL 等)来保存数据。

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

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

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

看这里:https://github.com/mikesparr/loopback-example-users-to-mysql

祝你好运!

  1. 使用 slc loopback:dataSource
  2. 创建持久性(Mongo 或任何其他)数据源
  3. 编辑model-config.json并提到上面创建的数据源。
  4. 重启服务器
  1. 设置数据库。
  2. 通过添加数据库编辑 ./server/datasources.json 来定义新数据源,例如:

"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 让内置模型使用您的新数据源:

{
  "_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.Create 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();
});

  1. 运行 脚本 cd server node create-lb-tables.js

这是 link 官方文档中关于将内置模型放入数据库的

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