안녕하세요. 김재경 입니다.
Alloy에서 전역 모델을 생성하여 저장하였는데 이해할 수 없는 경우가 있어서 질문드립니다.
우선 소스부터 설명드리면
User.js 라는 파일의 모델이 있구요.
exports.definition = {
config: {
"URL": Alloy.CFG.rest_url + "/api/User/",
"debug": 1,
"adapter": {
"type": "restapi"
/*"collection_name": "User",
"idAttribute": "USER_ID" id missing error 방지 */
},
"columns": {
"USER_ID" : "string",
"USER_NAME" : "string",
"EMAIL" : "string",
"USER_FG" : "string"
}
},
이하생략 …
이 모델을 alloy.js 에서 전역 선언하였습니다.
var UserModel = Alloy.Models.instance('User');
그리고 회원가입 화면에서 아래와 같이 저장합니다.
var model = Alloy.createModel("User");
var params = {
id : null,
USER_ID : '', // 빈값으로 보내야 등록된다.
USER_NAME : name,
EMAIL : email,
PASS : pass
};
그리고 아래 코드는 가입시킨후 acs에서 동일한 아이디를 생성하고 acs키를 받아와 mssql에 업데이트 시켜주는 코드 입니다.
UserModel.save({id : null, 'USER_ID' : email, 'CLOUD_ID' : user.id });
코드를 잘 보시면 id를 null 값으로 보내고 있습니다.
이걸 하지 않으면 rest url 에 자동 생성된 guid가 달라붙어 날아가더라구요.
(restapi.js 소스에서 그렇게 보내는것 같습니다.)
restapi 서버쪽 코딩은 asp.net mvc 로 구현되어 있습니다.
사용자 테이블같은 경우 USER_ID 가 기본키인데 그걸 idAttribute 속성에 적용시키면 MISSING ID 에러가 납니다.
기본키를 다른걸로 지정하면 에러가나고 속성을 지우니 id = null 을 일일이 줘야하고 난감하네요.
Backbone을 잘 이해하지 못하다 보니 이런 패턴으로 구현하는건지도 의심스럽네요 ㅎㅎ
조언을 부탁드리겠습니다.