Skip to content

Commit

Permalink
cache user details
Browse files Browse the repository at this point in the history
  • Loading branch information
JaneJeon committed Oct 1, 2019
1 parent b1eff70 commit 08a07b7
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 5 deletions.
1 change: 1 addition & 0 deletions lib/mongoose.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ mongoose.connection.on('error', err => {
process.exit(1)
})

require('cachegoose')(mongoose)
mongoose.plugin(require('mongoose-hidden')())
mongoose.plugin(require('mongoose-paginate-v2'))
mongoose.plugin(accessibleRecordsPlugin)
Expand Down
6 changes: 3 additions & 3 deletions lib/passport.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ const _ = require('lodash')

passport.serializeUser((user, done) => done(null, user.id))
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user)
})
User.findById(id)
.cache(3600, '')
.exec((err, user) => done(err, user))
})

// User.findOrCreate({ githubId: profile.id }, (err, user) => done(err, user)
Expand Down
7 changes: 7 additions & 0 deletions models/user.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const mongoose = require('../lib/mongoose')
const cachegoose = require('cachegoose')

const schema = new mongoose.Schema({
email: { type: String, unique: true },
Expand All @@ -20,4 +21,10 @@ const schema = new mongoose.Schema({
}
})

const cacheKey = id => `cache:user:${id}`
schema.static('cacheKey', cacheKey)
schema.post('save', function(doc) {
cachegoose.clearCache(cacheKey(doc.id))
})

module.exports = mongoose.model('User', schema)
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"@casl/ability": "^3.2.0",
"@casl/mongoose": "^2.3.2",
"@primer/components": "^14.2.0",
"cachegoose": "^8.0.0",
"chalk": "^2.4.2",
"commander": "^3.0.1",
"connect-ensure-login": "^0.1.1",
Expand Down
95 changes: 93 additions & 2 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2565,7 +2565,7 @@ boxen@^1.2.1:
term-size "^1.2.0"
widest-line "^2.0.0"

brace-expansion@^1.1.7:
brace-expansion@^1.1.7, brace-expansion@^1.1.8:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
Expand Down Expand Up @@ -2823,6 +2823,40 @@ cacheable-request@^6.0.0:
normalize-url "^4.1.0"
responselike "^1.0.2"

cachegoose@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/cachegoose/-/cachegoose-8.0.0.tgz#3d06bb61cc1089e2f199a0f6c882d89ef3e68aad"
integrity sha512-gAwa/nH2W945PxLU6A1ipQMUpnJcScRJWHBBsaUWuNCyxdhdQ22miUNWfmGa//HC2inlkceKn38hQBm79sEQsw==
dependencies:
brace-expansion "^1.1.8"
cacheman "^2.2.1"
cacheman-redis "^1.1.2"
jsosort "0.0.0"
sha1 "^1.1.1"

cacheman-memory@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/cacheman-memory/-/cacheman-memory-1.1.0.tgz#05047af17f31bfa5286b363f096089f3cd88da7d"
integrity sha512-jZ/Sg/LdgkN+T3G0BV3ekYzCAswKwZRBOvOmZ/VYwdhSTtMz6irMOt1JppBGZ7zVdjcBeku9tfOzb49KbXIT2w==
dependencies:
lru-cache "~4.1.x"

cacheman-redis@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/cacheman-redis/-/cacheman-redis-1.1.2.tgz#d54454dd492803ff3382ad929fcb8693ea394cb6"
integrity sha1-1URU3UkoA/8zgq2Sn8uGk+o5TLY=
dependencies:
parse-redis-url "0.0.2"
redis ">= 2.4.x"

cacheman@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/cacheman/-/cacheman-2.2.1.tgz#3510c0def12429d61b780128ff18f9d284bb02b8"
integrity sha1-NRDA3vEkKdYbeAEo/xj50oS7Arg=
dependencies:
cacheman-memory "^1.0.2"
ms "^0.7.1"

call-me-maybe@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
Expand Down Expand Up @@ -2937,6 +2971,11 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==

"charenc@>= 0.0.1":
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=

chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.0.4, chokidar@^2.1.5, chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
Expand Down Expand Up @@ -3543,6 +3582,11 @@ cross-spawn@^7.0.0:
shebang-command "^1.2.0"
which "^1.2.9"

"crypt@>= 0.0.1":
version "0.0.2"
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=

crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
Expand Down Expand Up @@ -4299,6 +4343,11 @@ dotenv@^6.2.0:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064"
integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==

double-ended-queue@^2.1.0-0:
version "2.1.0-0"
resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c"
integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=

duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
Expand Down Expand Up @@ -7187,6 +7236,11 @@ jsonfile@^4.0.0:
optionalDependencies:
graceful-fs "^4.1.6"

[email protected]:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsosort/-/jsosort-0.0.0.tgz#5f5516a2af63bb648e4e525f514e49ade0f899fe"
integrity sha1-X1UWoq9ju2SOTlJfUU5JreD4mf4=

jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
Expand Down Expand Up @@ -7586,7 +7640,7 @@ [email protected], lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"

lru-cache@^4.0.1, lru-cache@^4.1.2:
lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@~4.1.x:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
Expand Down Expand Up @@ -8079,6 +8133,11 @@ [email protected], ms@^2.1.1, ms@^2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==

ms@^0.7.1:
version "0.7.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
integrity sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=

multicast-dns-service-types@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
Expand Down Expand Up @@ -8895,6 +8954,11 @@ parse-json@^5.0.0:
json-parse-better-errors "^1.0.1"
lines-and-columns "^1.1.6"

[email protected]:
version "0.0.2"
resolved "https://registry.yarnpkg.com/parse-redis-url/-/parse-redis-url-0.0.2.tgz#13c92a0abbe6f2512006a8c49de6cb7b8dd4b277"
integrity sha1-E8kqCrvm8lEgBqjEnebLe43Usnc=

[email protected]:
version "5.1.0"
resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.0.tgz#a8244ee12bbd6b8937ad2a16ea43fe348aebcc86"
Expand Down Expand Up @@ -10326,6 +10390,25 @@ realpath-native@^1.1.0:
dependencies:
util.promisify "^1.0.0"

redis-commands@^1.2.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785"
integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==

redis-parser@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b"
integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=

"redis@>= 2.4.x":
version "2.8.0"
resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02"
integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==
dependencies:
double-ended-queue "^2.1.0-0"
redis-commands "^1.2.0"
redis-parser "^2.6.0"

reduce@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/reduce/-/reduce-1.0.2.tgz#0cd680ad3ffe0b060e57a5c68bdfce37168d361b"
Expand Down Expand Up @@ -10890,6 +10973,14 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"

sha1@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848"
integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=
dependencies:
charenc ">= 0.0.1"
crypt ">= 0.0.1"

shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
Expand Down

0 comments on commit 08a07b7

Please sign in to comment.