🙆♀️
Apollo serverで、DB Session 使用的な例
概要:
Apollo serverで、DBセッションを使う例となります。
- User IDを使う例で、ログイン前は別のファイルセッションを使う形となります。
- mongoDBに、読み書きする例です
- クライアントのテストは、React + apollo clientで行いました
環境
- Apollo Server
- node 14
- mongoDB
参考のコード
GraphQL
-
部分的な説明になりますが。session周辺の実装を記載します
-
session定義
src/scheme.js
scheme.js
type Session {
id: String
user_id: String
key: String
value: String
}
- query : user_id, keyを指定
src/query.js
query.js
session(user_id: String, key: String): Session
- mutaion : 追加、削除
src/mutation.js
mutation.js
addSession(user_id: String!, key: String, value: String!): Session
deleteSession(user_id: String!, key: String): Session
- resolvers の追加
src/index.js
index.js
const resolvers = {
Query: {
async session(parent, args, context, info){
return await LibSession.get_item(args);
},
},
Mutation: {
addSession: async (parent, args, context) => {
var ret = await LibSession.add_item(args)
return ret
},
deleteSession: async (parent, args, context) => {
var ret = await LibSession.delete_uid(args.user_id, args.key)
return ret
},
}
};
-
テストのGraphQL: GET、追加、削除を準備
-
get
query {
session(user_id: "60d67fb70160bf019dfe8169", key: "key9"){
id
key
value
}
}
- set : DBに値が追加されます。
mutation add {
addSession( user_id: "60d67fb70160bf019dfe8169", key: "key9",
value: "hoge"
) {
id
}
}
- delete
mutation delete {
deleteSession(user_id: "60d67fb70160bf019dfe8169", key: "key9") {
id
}
}
....
Discussion