2013-10-27 12 views
0

내가 멀리 추상적 내 몽구스 스키마에서 모델하려면 :몽구스 하나의 중첩 된 모델

AddressSchema = mongoose.Schema(
    _type: String 
    first_name: String 
    last_name: String 
    address_line1: String 
    address_line2: String 
    zip_code: String 
    city: String 
    state: String 
    phone_number: Number 
) 
AddressSchema = Schema.AddressSchema 

을하고 나중에 같은 것을 할 :

그러나
ShippingChoicesRequestSchema = mongoose.Schema(
    retailer: String 
    products: [ ProductSchema ] 
    shipping_address: 
    ref: AddressSchema 
    type: ObjectId 
) 

, 내가 요청을 보낼 때, 이 중첩 된 주소 문서를 만들지 않습니다. shipping_address: [ AddressSchema] 같은 것을 수행하여 배열로이 작업을 수행 할 수 있다는 것을 알고 있지만 반복 필드가 아닌 경우에는 어떻게해야합니까?

는 편집 :

요청은 다음과 같습니다

{ 
    "retailer": "something", 
    "products": [...], 
    "shipping_address": { 
    "_type": "address", 
    "first_name": "...", 
    "last_name": "...", 
    "address_line1": "...", 
    "address_line2": "...", 
    "zip_code": "...", 
    "city": "...", 
    "state": "...", 
    "phone_number": ... 
    } 
} 

하지만 몽고에서 그것을 볼 때 내가 얻을 :

{ 
    "retailer" : "something", 
    "_id" : ObjectId("526ad0a3c0cff58a54000001"), 
    "products" : [ 
    { 
     "variant_choice" : { 
     "unit_price" : 3999, 
     "color" : "Black", 
     "size" : "M", 
     "_type" : "variant_choice" 
     }, 
     "quantity" : 1, 
     "product_id" : "123456", 
     "_type" : "product" 
    } 
    ], 
    "__v" : 0 
} 

그래서 주소가 저장되지 않습니다.

AddressSchema = mongoose.Schema(
    _type: String 
    first_name: String 
    last_name: String 
    address_line1: String 
    address_line2: String 
    zip_code: String 
    city: String 
    state: String 
    phone_number: Number 
); 

또한 모델을 정의해야합니다 :

var AddressModel = mongoose.model('Address', AddressSchema); 

그런 다음 우리가 subdoc으로 주소를 참조 할 수 있습니다 : 여기

+0

무엇 귀하의 요청은 어떻게 생겼습니까? –

답변

0

우리는 스키마 정의하는

ShippingChoicesRequestSchema = mongoose.Schema(
    retailer: String 
    products: [ ProductSchema ] 
    shipping_address: {type: ObjectId, ref: 'Address'} 
); 
+0

감사합니다! 이제는 다른 오류가 발생합니다 :'{message : '경로 "shipping_address"''의 값 "[object Object]"에 대한 버퍼 캐스팅이 실패했습니다. 전체'ShippingChoiceRequest'를 한 번에 정의 할 수있는 방법이 있습니까 별도로 중첩 된 주소를 정의하지 않고도? – maxko87