将内置模型迁移到数据库
Migrating built-in models to Databases
如何将用户、角色、用户角色映射等内置模型移动到我们创建的数据库而不是默认的 datasource:db?内置模型未在 Arc 中列出。
我尝试创建一个继承这些基础模型的新模型。但是,数据没有保存到新模型中。
请指教...我已经坐了几个星期了。谢谢
默认"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" 命令执行此操作。向导将帮助您定义数据源。不要忘记安装数据库连接器。
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 页面上的模型中的 creating/updating 数据库架构。注意自动更新和自动迁移功能的区别
http://docs.strongloop.com/display/public/LB/Creating+a+database+schema+from+models
如何将用户、角色、用户角色映射等内置模型移动到我们创建的数据库而不是默认的 datasource:db?内置模型未在 Arc 中列出。
我尝试创建一个继承这些基础模型的新模型。但是,数据没有保存到新模型中。
请指教...我已经坐了几个星期了。谢谢
默认"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" 命令执行此操作。向导将帮助您定义数据源。不要忘记安装数据库连接器。
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 页面上的模型中的 creating/updating 数据库架构。注意自动更新和自动迁移功能的区别
http://docs.strongloop.com/display/public/LB/Creating+a+database+schema+from+models