Be well coding/In Immersive
8/1 - 4주 프로젝트
be well
2019. 8. 1. 20:28
Toy 42번 문제. Hashtableresizing 명시된대로 처리는 했지만 정답은 아닌 것 같음.. 오늘 테스트케이스가 너무 관대하다.
var makeHashTable = function() {
var result = {};
var storage = [];
var storageLimit = 4;
var size = 0;
result.insert = function(key, value) {
let index = getIndexBelowMaxForKey(key, storageLimit);
if (!storage[index]) {
storage[index] = value;
size++;
} else {
storage[index] = value;
}
if ((storageLimit / 4) * 3 <= size) {
for (let i = 0; i < Math.ceil(storageLimit / 2); i++) {
delete storage[i];
}
size = storage.length;
}
};
return result;
}
graphQL 을 이용해서 nickName을 변경
DB 에 있는 비밀번호를 변경 (update) 해주기 위해서 grapgql 과 resolver 를 정의해서 해결했다.
먼저 nickname graphql 파일에서 mutation 형식과 리턴 값인 Result 를 정의하고
type Mutation {
changePassWord(password: String!): Result!
}
type Result {
success: Boolean!
err: String
isLogin: Boolean!
}
Mutation 에서 인자로 첫번 째는 부모객체 ( _ 로 생략) , 두번 째는 요청 시 인자로 들어오는 mutation 인자로 받아온 새 비밀번호를
DB 에 sequelize 문으로 변경해줬다.
export default {
Mutation: {
changePassWord: async (_, args, { req }) => {
const { password } = args;
const { userinfo } = req;
if (userinfo !== undefined && userinfo.id !== undefined) {
const { id, nickName } = userinfo;
return User.update({ password }, { where: { id, nickName } })
.then(user => {
if (user) {
return {
success: true,
err: null,
isLogin: true
};
}
return {
success: false,
err: "PassWord Change fail",
isLogin: true
};
})
.catch(err => {
return {
success: false,
err,
isLogin: true
};
});
}
return {
success: false,
err: "token expire",
isLogin: false
};
}
}
};