Far*_*sir 10 synchronization offline node.js strongloop loopbackjs
我已经遵循环回脱机同步示例并使用嵌入式文档创建自己的模型.我创建了一个名为Project的Model,其中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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
ProjectMember.json
{
"name": "ProjectMember",
"base": "Model",
"idInjection": true,
"properties": {
...
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
Run Code Online (Sandbox Code Playgroud)
在服务器端model-config.json中我更新了数据源,如下所示:
"Project": {
"dataSource": "my_db"
},
"ProjectMember": {
"dataSource": "transient"
}
Run Code Online (Sandbox Code Playgroud)
在lbclient/models /的客户端,我添加了2个文件local-project.json和remote-project.json,与local-todo.json和remote-todo.json完全相同.我更新了客户端model-config.json文件,如下所示:
"RemoteProject": {
"dataSource": "remote"
},
"LocalProject": {
"dataSource": "local"
}
Run Code Online (Sandbox Code Playgroud)
在客户端控制器中,我运行以下代码:
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();
});
Run Code Online (Sandbox Code Playgroud)
它创建了Project但无法创建嵌入式模型.它显示"无法读取属性创建未定义"?有没有办法在客户端创建嵌入式模型?
更新
嵌入式模型仅适用于服务器端.但是当browserify创建browse.bundle.js时,它无法添加嵌入式模型.
我遵循反复试验的方法,得出了关于离线嵌入模型的解决方案。和之前一样,我只在“common/models/”目录中定义了Project和ProjectMember之间的关系。我发现,我也必须在客户端模型中定义关系。所以我做了以下步骤并且它有效。
我创建了一个 json 文件 - “lbclient/models/local-project-member.json”。
{
"name": "LocalProjectMember",
"base": "ProjectMember"
}
Run Code Online (Sandbox Code Playgroud)在“lbclient/model-config.json”中添加了以下行。
"LocalProjectMember":{
"dataSource": "local"
}
Run Code Online (Sandbox Code Playgroud)修改“lbclient/models/local-project.json”文件如下。
{
"name": "LocalProject",
"base": "Project",
"relations":{
"members": {
"type": "embedsMany",
"model": "LocalProjectMember",
"property": "memberList",
"options": {
"persist": true,
"validate": true,
"forceId": false
}
}
}
}
Run Code Online (Sandbox Code Playgroud)因此,结论是,如果您希望嵌入式模型离线工作,则必须重新定义客户端模型中的关系。
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |