环回:embedded式模型在脱机同步中不起作用
我已经遵循了loopback离线同步的例子,并创build了我自己的embedded式文档模型。 我创build了一个名为Project的模型,其中ProjectMembers是embedded模型。 这是我的模型:
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 /客户端,我添加了两个文件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(); });
它创build项目,但未能创buildembedded式模型。 它显示“无法读取属性创build未定义”? 有什么办法在客户端创buildembedded式模型?
UPDATE
embedded式模型只能在服务器端工作。 但是,当browserify创buildbrowse.bundle.js时,它无法添加embedded式模型。
我遵循了反复试验的方法,并提出了关于离线embedded式模型的解决scheme。 如前所述,我只在“common / models /”目录中定义了Project和ProjectMember之间的关系。 我发现的是,我也必须定义客户端模型中的关系。 所以我做了以下步骤,它的工作原理。
-
我创build了一个json文件 – “lbclient / models / local-project-member.json”。
{ "name": "LocalProjectMember", "base": "ProjectMember" }
-
在“lbclient / model-config.json”中添加了以下几行。
"LocalProjectMember":{ "dataSource": "local" }
-
修改“lbclient / models / local-project.json”文件如下。
{ "name": "LocalProject", "base": "Project", "relations":{ "members": { "type": "embedsMany", "model": "LocalProjectMember", "property": "memberList", "options": { "persist": true, "validate": true, "forceId": false } } } }
所以结论是,如果你想让你的embedded式模型在离线状态下工作,你必须重新定义客户端模型中的关系。