2016-08-10 2 views
1

У меня есть эти две модели:методы Loopback embedsMany Helper не работают

Student

{ 
    "name": "student", 
    "plural": "students", 
    "base": "User", 
    "idInjection": false, 
    "options": { 
     "validateUpsert": true 
    }, 
    "relations": { 
     "test": { 
      "type": "embedsMany", 
      "model": "test", 
      "property": "mytest", 
      "options": { 
       "validate": true, 
       "forceId": false 
      } 
    } 
} 

и

Тест

{ 
    "name": "test", 
    "base": "Model", 
    "idInjection": true, 
    "options": { 
     "validateUpsert": true 
    }, 
    "properties": { 
     "text": { 
      "type": "string", 
      "required": true 
     } 
    } 
} 

Когда я пытаюсь создайте новый тест, который я получаю эта ошибка

Error: Invalid reference: undefined

Я создаю тест таким образом:

Student.js

studentInstance.test.add({text : "something "}) 

Что я делаю неправильно?

Update

Удалить в embedsMany

идентификатор обновления в тесте.

Student.js

Student.show = function(email, cb) { 


     Student.findById(email,function(err, student) { 

      ... 

      var tmp = student.mytest; 

      for (var i = 0; i < tmp.length; i++) { 
       student.test.destroy(tmp[i].id); 
      } 

     }) 

       ... 

    } 

Я попытался с

destroy не работает правильно, не всегда удалить данные

и

remove показать эту ошибку

Error: Invalid reference: undefined 
    at EmbedsMany.remove 

Update

Добавлен пример дб

{ 
    "_id": "value", 
    "property1": "value", 
    . 
    . 

    "mytest": [ 
     { 
      "text": "something", 
      "creation": { 
       "$date": "2016-08-23T14:31:44.678Z" 
      }, 
      "id": "d738253472876b17feb4b46b" 
     } 
    ] 
} 

ответ

1

Вы не имеете test модель.

В test.json вы определили свои имена, как notification =>"name": "notification",

UPDATE

Для дома (без отношении существующих) внедренный экземпляра используйте studentInstance.test.build({text : "something "})

и для создания (с сохраняющейся), что пожалуйста, используйте studentInstance.test.create({text : "something "})

+0

Спасибо за ответ. это не ошибка. У меня неправильная копия/вставка. В проекте имена одобрены. – Phan

+0

@Phan Ah, я обновил свой ответ –

+0

Спасибо этой работе.Теперь у меня такая же проблема для удаления теста, который я пробовал с помощью 'remove',' unset' и 'destroyById' – Phan