2014-10-25 2 views
0

저는 MeanJS를 사용 중이며 걸림 거리가 있습니다. 가능한 경우 MeanJS가 제공하는 Angular로 $ 리소스 서비스의 $ update 함수를 사용하고 싶습니다.MeanJS : 배열의 몽구스 객체 참조를 각도로 설정합니다.

몽구스 스키마를 : 여기에 내가 할 노력하고있어 매우 단순화 된 버전입니다

var mongoose = require('mongoose'), 
Schema = mongoose.Schema; 

var Lotion = new Schema({ 
    name: String; 
}); 
var BasketSchema = new Schema({ 
    lotions: [{ 
    type: Schema.ObjectId, 
    ref: 'Lotion' 
    }] 
}); 

각도 : 나는 이미 로션 객체와 페이지로드시 바구니 객체를 검색하고 이제 단순히 노력하고 있습니다 로션 개체를 바구니의 로션 배열에 추가합니다.

$scope.putTheLotionInTheBasket = function(lotion, basket){ 
    basket.lotions.push(lotion); 
    basket.$update(function(data){ 
       //success 
      }, 
      //failure 
      function(error){ 
       $scope.error = error.data.message; 
      } 
) 
} 

여기서 알 수있는 것처럼이 기능은 작동하지 않습니다. 400을 반환합니다 Cast to ObjectId failed for value "[object Object]" at path "agencies", name:CastError,…}

간단하지만 올바른 방법이 있습니까? 내가 이미 클라이언트 측에 두 개체를 모두 가지고 있지만 새 REST 끝점과 $ 리소스 함수를 만들고 서버에서 조회를 수행하기 위해 로션 ID를 전달해야합니까?

답변

5

나는 솔루션의 단순성에 난처하지만, 여기 있습니다. 몽구스는 내부적으로 Mongoose.Schema.ObjectId에 유효한 진수 개체 ID 문자열을 캐스팅 것이기 때문에, 단순히

basket.lotions.push(lotion); 

basket.lotions.push(lotion._id); 

및 MEANJS을 대체 할 수 있으며, 몽구스는 무거운의 나머지 부분에 대한 작업을 수행 나를. 간단한 ... 그리고 그것을 알아 내기 위해 단지 2,3 일 걸렸다 :/

관련 문제