2015-10-11 20 views
10

Tôi đã làm theo ví dụ loopback offline sync và tạo mô hình của riêng tôi bằng tài liệu được nhúng. Tôi đã tạo một Mô hình có tên Project, trong đó ProjectMembers là mô hình được nhúng. Dưới đây là mô hình của tôi:
Project.jsonVòng lặp: Mô hình được nhúng không hoạt động trong đồng bộ hóa ngoại tuyến

{ 
    "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": [] 
} 

Trong phía máy chủ mô hình config.json tôi cập nhật các nguồn dữ liệu như sau:

"Project": { 
    "dataSource": "my_db" 
}, 
"ProjectMember": { 
    "dataSource": "transient" 
} 

Và ở phía máy khách trong lbclient/models/tôi đã thêm 2 tệp local-project.json và remote-project.json giống hệt như local-todo.json và remote-todo.json. tôi cập nhật các tập tin phía khách hàng mô hình-config.json như sau:

"RemoteProject": { 
    "dataSource": "remote" 
}, 
"LocalProject": { 
    "dataSource": "local" 
} 

Trong bộ điều khiển client tôi chạy các mã sau:

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(); 
}); 

Nó tạo ra các dự án nhưng thất bại trong việc tạo ra các mô hình nhúng . Nó hiển thị "Không thể đọc thuộc tính tạo không xác định"? Có cách nào để tạo mô hình nhúng ở phía máy khách không?

CẬP NHẬT
Mô hình nhúng chỉ hoạt động ở phía máy chủ. Nhưng khi trình duyệt tạo duyệt.bundle.js, nó không thêm mô hình được nhúng.

+0

bạn có thể chia sẻ nhật ký lỗi cho "Không thể đọc thuộc tính tạo không xác định" không? –

+0

đây là nhật ký lỗi: Không bắt buộc (lời hứa) TypeError: Không thể đọc thuộc tính 'create' của undefined – nutboltu

Trả lời

0

Tôi đã làm theo phương pháp thử và lỗi và đã đi đến giải pháp về mô hình nhúng ngoại tuyến. Như trước đây, tôi chỉ xác định mối quan hệ giữa Dự án và ProjectMember trong thư mục "common/models /". Những gì tôi thấy là, tôi phải xác định các mối quan hệ trong mô hình phía khách hàng quá. Vì vậy, tôi đã làm các bước sau và nó hoạt động.

  1. Tôi đã tạo tệp json - "lbclient/models/local-project-member.json".

    { 
        "name": "LocalProjectMember", 
        "base": "ProjectMember" 
    } 
    
  2. Nhập các dòng sau vào "lbclient/model-config.json".

    "LocalProjectMember":{ 
        "dataSource": "local" 
        } 
    
  3. Đã sửa đổi tệp "lbclient/models/local-project.json" như dưới đây.

    { 
    "name": "LocalProject", 
    "base": "Project", 
    "relations":{ 
    
        "members": { 
        "type": "embedsMany", 
        "model": "LocalProjectMember", 
        "property": "memberList", 
        "options": { 
         "persist": true, 
         "validate": true, 
         "forceId": false 
        } 
        } 
    } 
    } 
    

Vì vậy, kết luận là nếu bạn muốn công việc mô hình nhúng vào ẩn, bạn phải xác định lại mối quan hệ trong mô hình phía khách hàng.

Các vấn đề liên quan