2015-04-30 4 views
7

Как переместить встроенные модели, такие как User, Roles, User-Role-Mapping и т. Д. В базу данных, которую мы создали вместо источника данных по умолчанию: db? Встроенные модели не отображаются в Arc.Перенос встроенных моделей в базы данных

Я пробовал создать новую модель, которая наследует эту базовую модель. Но данные не сохраняются в новой модели.

Прошу совета ... Я сижу на нем пару недель. Thanks

ответ

9

По умолчанию «db» datasource помещается в память. Вот почему ваши данные не сохраняются после перезапуска приложения. Вы должны установить соответствующий соединитель базы данных, а затем вам нужно добавить источник данных для своей базы данных внутри сервера/datasources.js.

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

Если вы создали приложение с помощью команды «SLC шлейфа», то ваш источник данных содержит только разъем памяти. Проверьте 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. Мастер поможет вам определить ваш источник данных. Не забудьте установить разъем db.

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

UPDATE Вы можете попробовать этот код, чтобы обновить таблицы из моделей. Поместите свой код где-то в сервере/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 странице. Обратите внимание примыкают разницы между автообновление и automigrate функций

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

+0

Спасибо за ваш ответ. Я уже пробовал то же самое. Только одна проблема: я не могу перенести это в базу данных. Я пробовал использовать команду Arc и cli. –

+0

Не могли бы вы объяснить подробнее, что вы пробовали? –

+1

Я обновил ответ с помощью некоторого кода и ссылки на документы, где вы можете больше узнать об обновлении схемы из моделей. –

Смежные вопросы