2015-10-11 26 views
10

loopback offline sync örneğini takip ettim ve gömülü bir belgeyle kendi modelimi oluşturdum. ProjectMembers'in yerleşik model olduğu bir Proje Modeli oluşturdum.Loopback: Çevrimdışı senkronizasyonda Embedded Model çalışmıyor

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

: Ben aşağıdaki gibi veri kaynağı güncellenen sunucu taraflı model config.json olarak
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": [] 
} 

: İşte benim modeli vardır Ve istemci tarafında lbclient/modellerinde/2 tane yerel-project.json ve remote-project.json yerel-todo.json ve remote-todo.json ile aynı şekilde ekledim. Aşağıdaki kodları çalıştırmak istemci kontrolörü olarak

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

: İstemci tarafı model config.json aşağıdaki gibi dosya güncellenmiş

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

Bu Projesi oluşturur ancak gömülü model oluşturmak için başarısız oldu . "Özellik okunamadı tanımlanamadı" görüntüleniyor? İstemci tarafında gömülü model oluşturmanın herhangi bir yolu var mı?

GÜNCELLEME
gömülü modeli sadece sunucu tarafında çalışır. Ancak browserify browse.bundle.js dosyasını oluşturduğunda, gömülü modeli eklemez.

+0

"Yapılandırılamadı özellik oluşturulamıyor" hata günlüğünü paylaşabilir misiniz? –

+0

Burada hata günlüğü: Yakalama (vaatte) TypeError: undefined özelliği 'create' okunamıyor – nutboltu

cevap

0

Deneme ve hata yöntemini izledim ve çevrimdışı gömülü model hakkında bir çözüm geldi. Daha önce olduğu gibi, sadece "ortak/modeller /" dizinindeki Project ve ProjectMember arasındaki ilişkileri tanımladım. Bulduğum şey, müşteri tarafı modelindeki ilişkileri de tanımlamalıyım. Bu yüzden aşağıdaki adımları yaptım ve işe yarıyor.

  1. Bir json dosyası oluşturdum - "lbclient/models/local-project-member.json".

    { 
        "name": "LocalProjectMember", 
        "base": "ProjectMember" 
    } 
    
  2. Eklenen "lbclient/modeli-config.json" aşağıdaki hatları.

    "LocalProjectMember":{ 
        "dataSource": "local" 
        } 
    
  3. "lbclient/modelleri/yerel-project.json" olarak aşağıda dosya Modifiye.

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

Yani sonuca çevrimdışından üzerinde gömülü modeli çalışması istiyorsanız istemci tarafı modelinde ilişkileri yeniden tanımlamak zorunda olduğunu.

İlgili konular