2014-04-21 3 views
1

"sails": "~ 0.10.0-rc5", "sails-mongo": "^ 0.10.0-rc3"을 사용하고 있습니다. 두 가지 모델 인 Invoice, Item이 있습니다.Sails.js : 모델 연결을 사용하여 배열을 채우는 방법

송장 모델

Invoice: { 
    name: 'sample 1', 
    items: [1,2] // 1,2 is id of Item model 
} 

Item { 
    id: 1, 
    name: "king" 
} 
Item { 
    id: 2, 
    name: 'queen' 
} 

나는 결과이 원하는 항목 모델 :

Invoice: { 
    name: 'sample 1', 
    items: [{ 
     id: 1, 
     name: "king" 
    }, { 
     id: 2, 
     name: 'queen' 
    }] 
} 

I 것이란 d model associations from the sails docs하지만 내 상황에서 어떻게 사용하는지 모르겠습니다.

+0

당신은 해결책을 공유 할 수 있을까? – Paulo

답변

1

귀하의 항목 모델은 다음과 같이 표시됩니다

attributes: { 
    name: "STRING" 
    // You don't need the ID field as this is automatically created for you 
} 

귀하의 송장 모델은 다음과 같이 표시됩니다

attributes: { 
    name: "STRING" 
    items: { 
     collection: "item", 
     via: "item" 
    } 
} 

는 이제 항목 모델의 몇 가지 문서를 만들 수 있습니다.

sails> ModelNameOfItem.create({name:'MyFirstItem'}).exec(console.log) 
null { name: 'MyFirstItem', 
    createdAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST), 
    updatedAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST), 
    _id: "some_id_created_by_mongo" } 

이제 송장 모델의 문서를 만듭니다.

sails> ModelNameOfInvoice.create({name:'MyFirstInvoice', items:"the_id from_item_created"}).exec(console.log) 
null { name: 'MyFirstInvoice', 
    createdAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST), 
    updatedAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST), 
    _id: "some_id_created_by_mongo" } 

모두 다! 이를 조회하려면 populate 메소드를 사용하십시오.

sails> Invoice.find({name:'MyFirstInvoice'}).populate('items').exec(console.log); 
+0

안녕 display_name : 시도하지만 항목 배열을 작동하지 않습니다. 그것은 단지 항목에 작동합니다. – user3487954

+0

@ user3487954'collection'과'via' 속성을 포함하도록 답안을 업데이트했습니다. 코드는 테스트되지 않지만 sailsjs 문서에서 가져옵니다. 작동해야합니다 :) – aludvigsen

+0

Invoice.create에서 항목 : "the_id from_item_created"항목이 있어야합니다 : [ "the_id from_item_created"]? –

1

정답은 다음과 같습니다 송장 모델 : 하나를 발견 할 경우

... 
items: { 
    collection: 'item' 
} 
+0

나는 이것을 어떻게 얻을 수 있을지 모른다. 그게 정말로 도움이되는지. @ Thinh Pham 어떤 공식 돛의 문서에서 우리를 가리킬 수 –

+0

질문에 대답하지 않습니다 .. – Paulo

관련 문제