2017-10-02 15 views
0

나는 학생이며 학생입니다. 나는 nodejs + 몽구스를 배우려고 노력하고 있었다. 몽구스 ID에 대해 두 개의 다른 콜렉션을 사용하여 비교 연산을 수행했습니다.MongoDB Id 형식을 읽을 수 없습니다. | bufferarray로 표시

모델 디자인 모델 하나를

var ShowroomSchema = new Schema({ //ShowroomProduct/Item 
    rug: { //product/itemDetails 
     ... 
     colourTags: [Schema.Types.ObjectId], 
     ... 
    } 
}); 

모델이 :

var ShowroomColourTagSchema = new Schema({ 
    name: String; 
}) 

내가 루프를 수행하려는 나중에 내 ShowroomSchemaShowroomColourTagSchema의 id의를 저장하고 있어요 이드와 같은지 확인하기 위해 색상의 이름을 출력합니다.

기능

//colour tags 
for (var index = 0; index < models.length; index++) { // model two id, name 
     var element = models[index]; 

     for (var j = 0; j < item.rug.colourTags.length; j++) { // model one just array of object ids 
     // for (var j in item.rug.sizeCategoryTags) { 
     if (element._id.equals(item.rug.colourTags[j]._id)) { 
       tags.push(element.name); 
     } 
     } 
} 

하지만 조건 작품을 만들려고 노력의 문제에 직면하고있다. 지난 4-5 시간 동안 코드를 디버깅하려고합니다. 시계 식은 showroom의 colourTags를 버퍼 배열로 표시합니다.

enter image description here

백엔드

showroom_colour_tags 수집

{ 
    "_id" : ObjectId("59c4310ada77350004cef56c"), 
    "updated_at" : ISODate("2017-09-21T21:37:14.043+0000"), 
    "created_at" : ISODate("2017-09-21T21:37:14.043+0000"), 
    "name" : "Black", 
    "__v" : NumberInt(0) 
} 
{ 
    "_id" : ObjectId("59c43114da77350004cef56e"), 
    "updated_at" : ISODate("2017-09-21T21:37:19.378+0000"), 
    "created_at" : ISODate("2017-09-21T21:37:19.378+0000"), 
    "name" : "Grey", 
    "__v" : NumberInt(0) 
} 
{ 
    "_id" : ObjectId("59c43170da77350004cef574"), 
    "updated_at" : ISODate("2017-09-21T21:37:24.036+0000"), 
    "created_at" : ISODate("2017-09-21T21:37:24.036+0000"), 
    "name" : "Beige", 
    "__v" : NumberInt(0) 
} 

쇼룸 컬렉션

{ 
    "rug" : { 
     ... 
     "colourTags" : [ 
      ObjectId("59c43170da77350004cef574"), 
      ObjectId("59c43114da77350004cef56e") 
     ] 
     ... 
    } 
} 

은 어떻게 ID의 ????를 비교할 수 있습니다! 나는 어떤 제안에 대해서도 매우 감사 할 것입니다. 미리 감사드립니다. 자세한 정보가 필요한 경우 알려주십시오. 평화 :

+0

나는 몽구스에 대해 전문가가 아니지만, ObjectId를'.equal()'메소드와 비교할 수 있어야합니다. 이 답변을 확인하십시오 : https://stackoverflow.com/a/11638106/3411075 – Alexander

+0

item.rug.colourTags [j] ._ id에서 _id를 제거하면 colourTags는 배열이므로 위치 조건과 비교해야합니다. 예 : if (element._id.equals (item.rug.colourTags [j])) –

+0

예 참으로 ... 작동합니다 –

답변

1

item.rug.colourTags [j] ._ id에서 _id를 제거하면 colourTags는 위치와 비교해야하는 배열입니다. 귀하의 업데이트 조건은 다음과 같습니다.

if (element._id.equals(item.rug.colourTags[j]))