Migrating built-in models to Databases

雨燕双飞 提交于 2019-11-28 11:15:25

Default "db" datasource is placed in memory. That is why your data are not persisted after you restart application. You have to install appropriate database connector and then you have to add datasource for your database inside server/datasources.js.

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

If you created application with "slc loopback" command, then your datasource contains only memory connector. Check datasources.js file and you will see something like this:

{
  "db": {
  "name": "db",
  "connector": "memory"
  }
}

If you want to persist your data for example in postgresql database (process is almost same for any supported connector), you have to expand your datasoruces.json file with your database information:

{
  "db": {
  "name": "db",
  "connector": "memory"
  },

  "mydata": {
    "host": "db_host",
    "database": "your_database_name",
    "username": "your_db_username",
    "password": "your_db_password",
    "connector": "postgresql"
  }
}

You can also do this using "slc loopback:datasource" command. Wizard will help you to define your datasource. Don't forget to install db connector.

npm install loopback-connector-postgresql

Last thing to do is to assign your datasource to desired models. You can do this using wizard (see slc loopback:model command), or you can edit server/model-config.json file manually.

{
  "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
  }
}

UPDATE You can try this code snippet to update your tables from models. Put his code somewhere in 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);
    });
  }
});

I would recommend you to read about creating/updating database schema from models on strongloop page. Pay attention abut difference between autoupdate and automigrate functions

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!