2016-08-18 4 views
1

루프백에 개체 배열이 포함 된 컬렉션을 만들려고했습니다.루프백 및 MongoDB

{ 
    id: "16356135616aaasad", //autogenerated by mongo 
    "name" : "a name", 
    "valores": [ 
    {"valor": 567, "fecha": "2016-08-18T00:00:00.000Z"}, 
    {"valor": 569, "fecha": "2016-08-19T00:00:00.000Z"}, 
    ... 
    ] 
} 

내가 루프백에서 다음과 같은 구성했다 :

indicador.json이

{ 
    "name": "Indicador", 
    "plural": "indicadores", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true, 
    "autoId": true 
    }, 
    "properties": { 
    "nombre": { 
     "type": "string", 
     "required": true 
    } 
    }, 
    "relations": { 
    "historico": { 
     "type": "embedsMany", 
     "model": "Valor" 
    } 
    } 
} 

이이 기본 수집이 관련되어

은 내가 데이터를 저장이 같은 형식합니다 다른 모델 (영구적이지 않음) valor.json

{ 
    "name": "Valor", 
    "plural": "valores", 
    "base": "Model", 
    "properties": { 
    "valor": { 
     "type": "number", 
     "required": true 
    }, 
    "fecha": { 
     "type": "date", 
     "required": true 
    } 
    } 
} 

엔드 포인트에 게시물을 보내려고 할 때 문제가 발생합니다.

{ 
    "error": { 
    "name": "ValidationError", 
    "status": 422, 
    "message": "The `Indicador` instance is not valid. Details: `valores` contains invalid item at index `0`: `id` is blank (value: [ { valor: 0, fecha: 2016...} ]).", 
    "statusCode": 422, 
    "details": { 
     "context": "Indicador", 
     "codes": { 
     "valores": [ 
      "invalid" 
     ] 
     }, 
     "messages": { 
     "valores": [ 
      "contains invalid item at index `0`: `id` is blank" 
     ] 
     } 
    }, 
    "stack": "ValidationError: The `Indicador` instance is not valid. Details: `valores` contains invalid item at index `0`: `id` is blank (value: [ { valor: 0, fecha: 2016...} ]).\n at /home/dev/app/node_modules/loopback-datasource-juggler/lib/dao.js:322:12\n at ModelConstructor.<anonymous> (/home/dev/app/node_modules/loopback-datasource-juggler/lib/validations.js:492:11)\n at ModelConstructor.next (/home/dev/app/node_modules/loopback-datasource-juggler/lib/hooks.js:81:12)\n at ModelConstructor.<anonymous> (/home/dev/app/node_modules/loopback-datasource-juggler/lib/validations.js:489:23)\n at ModelConstructor.trigger (/home/dev/app/node_modules/loopback-datasource-juggler/lib/hooks.js:71:12)\n at ModelConstructor.Validatable.isValid (/home/dev/app/node_modules/loopback-datasource-juggler/lib/validations.js:455:8)\n at /home/dev/app/node_modules/loopback-datasource-juggler/lib/dao.js:318:9\n at doNotify (/home/dev/app/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)\n at doNotify (/home/dev/app/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)\n at doNotify (/home/dev/app/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)" 
    } 
} 

¿ 내가 왜이 오류가

:이 데이터

{ 
    "nombre": "UF", 
    "valores": [ 
    { 
     "valor": 0, 
     "fecha": "2016-08-18" 
    } 
    ] 
} 

API는 응답이 전송하는 경우?

내가 필요로하는 배열의 객체 내부에있는 ID는 필요하지 않습니다. 나는 왜 이것이 일어나는 지 이해하지 못합니다. 지표 모델에서 false로 :

+0

필요 "idInjection"을 설정하려고하지 않는 것이 지정해야합니다. – mrdotb

+0

@mrdotb 동일한 오류가 발생합니다. 이것은 매우 이상합니다. –

+0

루프백과 함께 embedOne을 사용하지 않습니다. hasMany 사용을 고려하십시오. 또는 표시기 모델에서 둥지를 사용합니다. – mrdotb

답변

0

당신은 내장 된 모델 미상, 안녕하세요 id

"relations": { 
    "historico": { 
     "type": "embedsMany", 
     "model": "Valor", 
     "options": { 
     "forceId": false, 
     "validate": true, 
     "persistent": false 
     } 
    } 
    } 
+0

이것은 나를 위해 작동하지 않습니다. 나는이 행동을 이해하지 못한다. 그것은 매우 이상합니다. –