Я следовал примеру loopback offline sync и создавал свою собственную модель со встроенным документом.
Я создал модель с именем Project, где ProjectMembers - встроенная модель. Вот моя модель:
Project.json
{
"name": "Project",
"base": "PersistedModel",
"strict": "throw",
"persistUndefinedAsNull": true,
"trackChanges": true,
"properties": {
...
},
"relations": {
"members": {
"type": "embedsMany",
"model": "ProjectMember",
"property": "members",
"options": {
"validate": true,
"forceId": false
}
}
}
}
ProjectMember.json
{
"name": "ProjectMember",
"base": "Model",
"idInjection": true,
"properties": {
...
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
В стороне сервера model-config.json я обновил источник данных, как показано ниже:
"Project": {
"dataSource": "my_db"
},
"ProjectMember": {
"dataSource": "transient"
}
И на стороне клиента в lbclient/models/я добавил 2 файла local-project.json и remote-project.json точно так же, как local-todo.json и remote-todo.json. Я обновил файл модели-config.json на стороне клиента, как показано ниже:
"RemoteProject": {
"dataSource": "remote"
},
"LocalProject": {
"dataSource": "local"
}
В клиентском контроллере я запускаю следующие коды:
ProjectModel.create($scope.project)
.then(function(project) {
var owner = loginDetails.getLoginUser();// the member
owner.role = 'owner';
owner.status = 'active';
project.members.create(owner); //shows error: couldn't read property
$scope.project = {};
$scope.$apply();
});
Он создает проект, но не смог создать встроенную модель. Он отображает "Не удалось прочитать свойство create undefined"? Есть ли способ создать встроенную модель на стороне клиента?
UPDATE
Встроенная модель работает только на стороне сервера. Но когда в браузере создайте browse.bundle.js, он не сможет добавить встроенную модель.