From cffe08b7852e07af3fc3b156b5c5df4566680c01 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Thu, 28 Apr 2022 11:09:32 +1200 Subject: [PATCH 1/3] Add fields to Mongoose query --- server/app.js | 4 +++- server/homebrew.model.js | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/server/app.js b/server/app.js index adb741b32..7d1e54d80 100644 --- a/server/app.js +++ b/server/app.js @@ -194,7 +194,9 @@ app.get('/download/:id', asyncHandler(async (req, res)=>{ app.get('/user/:username', async (req, res, next)=>{ const ownAccount = req.account && (req.account.username == req.params.username); - let brews = await HomebrewModel.getByUser(req.params.username, ownAccount) + const fields = 'title pageCount description authors views shareId editId createdAt updatedAt lastViewed'; + + let brews = await HomebrewModel.getByUser(req.params.username, ownAccount, fields) .catch((err)=>{ console.log(err); }); diff --git a/server/homebrew.model.js b/server/homebrew.model.js index be6b2f6cd..d0692f0a9 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -37,9 +37,9 @@ HomebrewSchema.statics.increaseView = async function(query) { return brew; }; -HomebrewSchema.statics.get = function(query){ +HomebrewSchema.statics.get = function(query, fields=null){ return new Promise((resolve, reject)=>{ - Homebrew.find(query, (err, brews)=>{ + Homebrew.find(query, fields, null, (err, brews)=>{ if(err || !brews.length) return reject('Can not find brew'); if(!_.isNil(brews[0].textBin)) { // Uncompress zipped text field unzipped = zlib.inflateRawSync(brews[0].textBin); @@ -52,13 +52,13 @@ HomebrewSchema.statics.get = function(query){ }); }; -HomebrewSchema.statics.getByUser = function(username, allowAccess=false){ +HomebrewSchema.statics.getByUser = function(username, allowAccess=false, fields=null){ return new Promise((resolve, reject)=>{ const query = { authors: username, published: true }; if(allowAccess){ delete query.published; } - Homebrew.find(query).lean().exec((err, brews)=>{ //lean() converts results to JSObjects + Homebrew.find(query, fields).lean().exec((err, brews)=>{ //lean() converts results to JSObjects if(err) return reject('Can not find brew'); return resolve(brews); }); From c46c4a9320a805c14f79b4a8e15bafa660129c9e Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Thu, 28 Apr 2022 20:19:01 +1200 Subject: [PATCH 2/3] Switch to use `select` method --- server/app.js | 13 ++++++++++++- server/homebrew.model.js | 6 +++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/server/app.js b/server/app.js index 7d1e54d80..c04e9b370 100644 --- a/server/app.js +++ b/server/app.js @@ -194,7 +194,18 @@ app.get('/download/:id', asyncHandler(async (req, res)=>{ app.get('/user/:username', async (req, res, next)=>{ const ownAccount = req.account && (req.account.username == req.params.username); - const fields = 'title pageCount description authors views shareId editId createdAt updatedAt lastViewed'; + const fields = [ + 'title', + 'pageCount', + 'description', + 'authors', + 'views', + 'shareId', + 'editId', + 'createdAt', + 'updatedAt', + 'lastViewed' + ]; let brews = await HomebrewModel.getByUser(req.params.username, ownAccount, fields) .catch((err)=>{ diff --git a/server/homebrew.model.js b/server/homebrew.model.js index d0692f0a9..cce9f9ac6 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -39,7 +39,7 @@ HomebrewSchema.statics.increaseView = async function(query) { HomebrewSchema.statics.get = function(query, fields=null){ return new Promise((resolve, reject)=>{ - Homebrew.find(query, fields, null, (err, brews)=>{ + Homebrew.find(query, (err, brews)=>{ if(err || !brews.length) return reject('Can not find brew'); if(!_.isNil(brews[0].textBin)) { // Uncompress zipped text field unzipped = zlib.inflateRawSync(brews[0].textBin); @@ -48,7 +48,7 @@ HomebrewSchema.statics.get = function(query, fields=null){ if(!brews[0].renderer) brews[0].renderer = 'legacy'; return resolve(brews[0]); - }); + }).select(fields); }); }; @@ -58,7 +58,7 @@ HomebrewSchema.statics.getByUser = function(username, allowAccess=false, fields= if(allowAccess){ delete query.published; } - Homebrew.find(query, fields).lean().exec((err, brews)=>{ //lean() converts results to JSObjects + Homebrew.find(query).select(fields).lean().exec((err, brews)=>{ //lean() converts results to JSObjects if(err) return reject('Can not find brew'); return resolve(brews); }); From b059bf68b5cd0cd248c1f45a1eb15d602e3b83d7 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Fri, 29 Apr 2022 10:53:03 +1200 Subject: [PATCH 3/3] Revert change to `select` method --- server/homebrew.model.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/homebrew.model.js b/server/homebrew.model.js index cce9f9ac6..d0692f0a9 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -39,7 +39,7 @@ HomebrewSchema.statics.increaseView = async function(query) { HomebrewSchema.statics.get = function(query, fields=null){ return new Promise((resolve, reject)=>{ - Homebrew.find(query, (err, brews)=>{ + Homebrew.find(query, fields, null, (err, brews)=>{ if(err || !brews.length) return reject('Can not find brew'); if(!_.isNil(brews[0].textBin)) { // Uncompress zipped text field unzipped = zlib.inflateRawSync(brews[0].textBin); @@ -48,7 +48,7 @@ HomebrewSchema.statics.get = function(query, fields=null){ if(!brews[0].renderer) brews[0].renderer = 'legacy'; return resolve(brews[0]); - }).select(fields); + }); }); }; @@ -58,7 +58,7 @@ HomebrewSchema.statics.getByUser = function(username, allowAccess=false, fields= if(allowAccess){ delete query.published; } - Homebrew.find(query).select(fields).lean().exec((err, brews)=>{ //lean() converts results to JSObjects + Homebrew.find(query, fields).lean().exec((err, brews)=>{ //lean() converts results to JSObjects if(err) return reject('Can not find brew'); return resolve(brews); });