2014-11-01 3 views
0

현재 Padrino 애플리케이션에서 CouchDB 백엔드로 작업 중입니다. 몇 가지 일반 문자열 외에 json을 저장하는 모델이 필요합니다. 이 모델은 (의사의)처럼 보이는 : 나는 어느 유형 properties에 저장 얼마나 많은 값을 예측할 수Padrino CouchDB 모델에 json 객체 저장

name: 'UniqueName', 
properties: { prop1: val1, prop2: val2 } 

. 현재 일반 모델을 사용합니다.

padrino g model MyModel name:string, properties:string 

속성을 저장하기 전에 json을 문자열로 지정합니다. 로드 할 때 문자열에서 json을 만듭니다. 나는 내가 잘못하고 있다고 느낍니다. CouchDB는 json 객체를 그대로 저장할 준비가되어 있기 때문에, Padrino의 모델에 네이티브 저장을위한 json이라는 것을 알려주는 방법이 있는지 궁금합니다. 마찬가지로 :

name: 'UniqueName', 
properies: 
    - prop1: val1, 
    - prop2: val2 

나는 별도의 컬렉션을 만들 및 MyModel에서 _id하여 참조 할 수 있다고 볼 수 있지만, 그 순간에 나는 name있어 함께 그것을 저장할. 가능한가?

답변

0

json을 문자열로 변환 할 필요가 없습니다. JSON 표준 lib를 사용하여 json을 구문 분석하고 배열로 저장하면됩니다.

original JSON data example: 
json_data = [{ prop1: val1, prop2: val2, prop3: val3 }] #store the JSON data from wherever it came 
parsed = JSON.parse(json_data.to_json) #store the parsed JSON data into an Array 

foo = MyModel.find(1) #find whatever collection you wanna update 
foo.properties = parsed 
# => [{ prop1: val1, prop2: val2, prop3: val3 }] 
foo.save 

귀하의 MyModel은 다음과 같아야합니다

{ 
    "_id" : "your_generated_id", 
    "_rev" : "your_generated_rev", 
    "name" : "UniqueName", 
    "properties" : [ 
     { 
      prop1: val1, 
      prop2: val2, 
      prop3: val3 
     } 
    ] 
} 

는 CouchDB를은 "스키마"입니다 기억하십시오. 더 자세한 내용 here.

+0

CouchDB는 schemaless입니다. 유일한 문제는 남아 있습니다. 마이그레이션을 어떻게 설명 했습니까? padrino/rails 모델? 마이그레이션은 ORM과 관련이 없기 때문에 마이그레이션을 유지하려고합니다. – mudasobwa

+0

Padrino는 [CouchRest ORM] (https://github.com/couchrest/couchrest)을 사용하여 CouchDB와 대화합니다. 당신이하려는 것은 캐스팅이라고 불리는 것입니다. 모델 등록 정보의 [CouchRest - 속성 배열] (http://www.couchrest.info/model/properties.html) 섹션을 참조하십시오. 또한 [CouchRest_ExtendDocument] (https://github.com/couchrest/couchrest_extended_document#general) 문서를 참조하십시오. 그래서 당신의 질문에 답하기 위해, 모델/마이그레이션은'property : properties, [String]' – Besto

+1

이 될 것입니다. – mudasobwa