2013-11-05 8 views
4
attributes: { 
    username: { 
     type: 'email', // validated by the ORM 
     required: true 
    }, 
    password: { 
     type: 'string', 
     required: true 
    }, 
    profile: { 
     firstname: 'string', 
     lastname: 'string', 
     photo: 'string', 
     birthdate: 'date', 
     zipcode: 'integer' 
    }, 
    followers: 'array', 
    followees: 'array', 
    blocked: 'array' 
} 

나는 현재 사용자를 등록한 후 사후 등록 프로필 정보를 업데이트합니다. 이 모델에 프로파일 데이터를 추가하는 방법은 무엇입니까?Sails.js - 중첩 모델을 업데이트하는 방법

다른 방법으로는 push 메서드가 작동하지만 읽지 않습니다. 형식 오류 :이 오류를 얻을 개체 [개체 개체]있는 방법 '푸시'(내가 아는까지)

 Users.findOne(req.session.user.id).done(function(error, user) { 

      user.profile.push({ 
       firstname : first, 
       lastname : last, 
       zipcode: zip 
      }) 

      user.save(function(error) { 
       console.log(error) 
      }); 

     }); 
+0

어떤 데이터베이스를 사용하고 있습니까? – colbydauph

+0

MongoDB를 사용하고 있습니다 – diskodave

답변

4

@Zolmeister가 올바른지. 항해는 다음과 같은 모델은 그들은 또한 (그렇지 않으면이 경우에 유용 할 것이다) 협회

GitHub Issue #124를 지원하지 않는 유형

string, text, integer, float, date, time, datetime, boolean, binary, array, json

속성을 지원합니다.

당신은 돛을 우회하며 같은 몽고의 기본 방법을 사용하여이 문제를 가져올 수 있습니다

Model.native(function(err, collection){ 

    // Handle Errors 

    collection.find({'query': 'here'}).done(function(error, docs) { 

     // Handle Errors 

     // Do mongo-y things to your docs here 

    }); 

}); 

는 심 이유가 거기에 있음을 알아 두셔야합니다. 그것들을 우회하면 (ID 요청을 ObjectId로 변환하고, 소켓을 통해 pubsub 메시지를 보내는 등) 배후에서 처리되는 기능 중 일부가 제거됩니다.

+0

잘 모르겠다 -'collection.find'는 promise 스타일의'done' 메소드를 가지고 있지 않습니다. –

+0

v0.10에서 변경되었을 수 있습니다. 그렇다면 콜백을 .find()의 마지막 인수로 전달하는 표준을 따르는 것 같습니다. – colbydauph

2

현재 항해가 중첩 된 모델 정의를 지원하지 않습니다이 없습니다. 'json' 유형을 사용해 볼 수 있습니다. 는 그 후 당신은 단순히 것이다 :

user.profile = { 
    firstname : first, 
    lastname : last, 
    zipcode: zip 
}) 

user.save(function(error) { 
    console.log(error) 
}); 
+4

Sails가 mongoDB 용으로 구축 된 것은 실망 스럽습니다. 문서 지향형 DB를 사용하면 이점이 있습니다. – diskodave

1

너무 늦게 응답하지만 나머지는 참조로 사용합니다.

Users.findOne(req.session.user.id).done(function(error, user) { 
    profile = { 
      firstname : first, 
      lastname : last, 
      zipcode: zip 
     }; 
    User.update({ id: req.session.user.id }, { profile: profile},   
     function(err, resUser) { 
    });   
}); 
관련 문제