在 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
祝你好运!
- 使用
slc loopback:dataSource
创建持久性(Mongo 或任何其他)数据源
- 编辑
model-config.json
并提到上面创建的数据源。
- 重启服务器
- 设置数据库。
- 通过添加数据库编辑 ./server/datasources.json 来定义新数据源,例如:
"mongodb_dev": {
"name": "mongodb_dev",
"connector": "mongodb",
"host": "127.0.0.1",
"database": "devDB",
"username": "devUser",
"password": "devPassword",
"port": 27017
}
- 更新您的 ./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();
});
- 运行 脚本
cd server
node create-lb-tables.js
这是 link 官方文档中关于将内置模型放入数据库的
https://docs.strongloop.com/display/public/LB/Creating+database+tables+for+built-in+models
为了在生产环境中持久保存用户数据,您做了哪些工作?有没有一种简单的方法可以找到用户模型的模式,以便可以在数据库中复制它?
(抢先注: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
祝你好运!
- 使用
slc loopback:dataSource
创建持久性(Mongo 或任何其他)数据源
- 编辑
model-config.json
并提到上面创建的数据源。 - 重启服务器
- 设置数据库。
- 通过添加数据库编辑 ./server/datasources.json 来定义新数据源,例如:
"mongodb_dev": {
"name": "mongodb_dev",
"connector": "mongodb",
"host": "127.0.0.1",
"database": "devDB",
"username": "devUser",
"password": "devPassword",
"port": 27017
}
- 更新您的 ./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();
});
- 运行 脚本
cd server
node create-lb-tables.js
这是 link 官方文档中关于将内置模型放入数据库的
https://docs.strongloop.com/display/public/LB/Creating+database+tables+for+built-in+models