2016-11-06 1 views
0

Sails.js를 배우기 시작했고 세션 변수에서 모델의 기본값을 설정하는 더 간단한 방법이 있는지 알고 싶습니까? Waterlock을 사용하여 인증을 수행하고 req.session.user_id과 같은 세션 변수에 user_id를 설정합니다. 메시지 모델이 있는데 'from' 필드를이 세션 변수에 기본값으로 설정하고 싶습니다. Sails.js에서이 작업을 수행 할 수있는 방법이 있습니까? 당신이 항해의 기본 ORM을 사용하는 경우모델에 기본값 설정 (Sails.js)

답변

0

워터 후 모델 속성은 defaultsTo 옵션이 있습니다. 제공된 값은 함수 일 수 있습니다. waterline documentation을 볼 수 있습니다.

샘플 모델

module.exports = { 
    attributes: { 
    description: { 
     type: 'string', 
     defaultsTo: 'No description.' 
    }, 
    email: { 
     type: 'email', 
     required: true, 
     unique: true 
    }, 
    alias: { 
     type: 'string', 
     defaultsTo: function(){ 
     return this.email; 
     } 
    }, 
    } 
}; 

제공된 값이 함수의 호출이 생성의 값에 바인딩 된 함수 인 경우.

Model.create(values)...의 경우 별칭이 null/undefined 인 경우 alias = defaultsTo.call(values)을 사용하여 별칭 값을 가져옵니다.

따라서 req.session.user_id을 사용하려면 생성 중에이를 포함해야 할 수 있습니다. Model.create({session: req.session,...}). 나는 Waterlock을 사용하지 않기 때문에 정말로 확신 할 수 없다. 그리고 이것이 이것이 최선의 방법이라고 생각하지 않습니다. 내 경험에서

당신이 개발 돛 디스크를 사용하는 경우 다음 이러한 추가 값이 유지됩니다 것을 볼 수 있지만, 같은 돛 - MySQL의 어댑터를 사용하는 경우 이러한 추가 값은 무시됩니다. 계속하기 전에 삭제할 수 있습니다.

beforeCreate: function(values, cb){ 
    delete values['session']; 
    cb(); 
    }