yusuketk 6 лет назад
Родитель
Сommit
7ec88a9c48

+ 2 - 1
src/server/models/bookmark.js

@@ -45,10 +45,11 @@ module.exports = function(crowi) {
     const Bookmark = this;
     const User = crowi.model('User');
 
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     return Bookmark.populate(bookmarks, {
       path: 'page',
       populate: {
-        path: 'lastUpdateUser', model: 'User', select: User.USER_PUBLIC_FIELDS, populate: User.IMAGE_POPULATION,
+        path: 'lastUpdateUser', model: 'User', select: User.USER_PUBLIC_FIELDS,
       },
     });
   };

+ 13 - 9
src/server/models/page.js

@@ -108,14 +108,15 @@ const addSlashOfEnd = (path) => {
  * @param {string} userPublicFields string to set to select
  */
 /* eslint-disable object-curly-newline, object-property-newline */
-const populateDataToShowRevision = (page, userPublicFields, imagePopulation) => {
+const populateDataToShowRevision = (page, userPublicFields) => {
+  // [TODO][user-profile-cache] change how to get profile image data in client side.
   return page
     .populate([
-      { path: 'lastUpdateUser', model: 'User', select: userPublicFields, populate: imagePopulation },
-      { path: 'creator', model: 'User', select: userPublicFields, populate: imagePopulation },
+      { path: 'lastUpdateUser', model: 'User', select: userPublicFields },
+      { path: 'creator', model: 'User', select: userPublicFields },
       { path: 'grantedGroup', model: 'UserGroup' },
       { path: 'revision', model: 'Revision', populate: {
-        path: 'author', model: 'User', select: userPublicFields, populate: imagePopulation,
+        path: 'author', model: 'User', select: userPublicFields,
       } },
     ]);
 };
@@ -263,12 +264,12 @@ class PageQueryBuilder {
     return this;
   }
 
-  populateDataToList(userPublicFields, imagePopulation) {
+  populateDataToList(userPublicFields) {
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     this.query = this.query
       .populate({
         path: 'lastUpdateUser',
         select: userPublicFields,
-        populate: imagePopulation,
       });
     return this;
   }
@@ -460,8 +461,9 @@ module.exports = function(crowi) {
   pageSchema.methods.populateDataToShowRevision = async function() {
     validateCrowi();
 
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     const User = crowi.model('User');
-    return populateDataToShowRevision(this, User.USER_PUBLIC_FIELDS, User.IMAGE_POPULATION)
+    return populateDataToShowRevision(this, User.USER_PUBLIC_FIELDS)
       .execPopulate();
   };
 
@@ -754,7 +756,8 @@ module.exports = function(crowi) {
     const totalCount = await builder.query.exec('count');
 
     // find
-    builder.populateDataToList(User.USER_PUBLIC_FIELDS, User.IMAGE_POPULATION);
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
+    builder.populateDataToList(User.USER_PUBLIC_FIELDS);
     const pages = await builder.query.exec('find');
 
     const result = {
@@ -795,9 +798,10 @@ module.exports = function(crowi) {
     // count
     const totalCount = await builder.query.exec('count');
 
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     // find
     builder.addConditionToPagenate(opt.offset, opt.limit, sortOpt);
-    builder.populateDataToList(User.USER_PUBLIC_FIELDS, User.IMAGE_POPULATION);
+    builder.populateDataToList(User.USER_PUBLIC_FIELDS);
     const pages = await builder.query.exec('find');
 
     const result = {

+ 1 - 1
src/server/models/user-group-relation.js

@@ -87,12 +87,12 @@ class UserGroupRelation {
   static findAllRelationForUserGroup(userGroup) {
     const User = UserGroupRelation.crowi.model('User');
     debug('findAllRelationForUserGroup is called', userGroup);
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     return this
       .find({ relatedGroup: userGroup })
       .populate({
         path: 'relatedUser',
         select: User.USER_PUBLIC_FIELDS,
-        populate: User.IMAGE_POPULATION,
       })
       .exec();
   }

+ 0 - 7
src/server/models/user.js

@@ -18,7 +18,6 @@ module.exports = function(crowi) {
   const STATUS_INVITED = 5;
   const USER_PUBLIC_FIELDS = '_id image isEmailPublished isGravatarEnabled googleId name username email introduction'
   + 'status lang createdAt lastLoginAt admin imageAttachmentPath';
-  const IMAGE_POPULATION = { path: 'imageAttachment', select: 'filePathProxied' };
 
   const LANG_EN = 'en';
   const LANG_EN_US = 'en-US';
@@ -155,11 +154,6 @@ module.exports = function(crowi) {
     return lang;
   }
 
-  userSchema.methods.populateImage = async function() {
-    // eslint-disable-next-line no-return-await
-    return await this.populate(IMAGE_POPULATION);
-  };
-
   userSchema.methods.isPasswordSet = function() {
     if (this.password) {
       return true;
@@ -774,7 +768,6 @@ module.exports = function(crowi) {
   userSchema.statics.STATUS_DELETED = STATUS_DELETED;
   userSchema.statics.STATUS_INVITED = STATUS_INVITED;
   userSchema.statics.USER_PUBLIC_FIELDS = USER_PUBLIC_FIELDS;
-  userSchema.statics.IMAGE_POPULATION = IMAGE_POPULATION;
   userSchema.statics.PAGE_ITEMS = PAGE_ITEMS;
 
   userSchema.statics.LANG_EN = LANG_EN;

+ 1 - 1
src/server/routes/apiv3/user-group.js

@@ -577,6 +577,7 @@ module.exports = (crowi) => {
     const { id } = req.params;
     const { limit, offset } = req.query;
 
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     try {
       const { docs, total } = await Page.paginate({
         grant: Page.GRANT_USER_GROUP,
@@ -587,7 +588,6 @@ module.exports = (crowi) => {
         populate: {
           path: 'lastUpdateUser',
           select: User.USER_PUBLIC_FIELDS,
-          populate: User.IMAGE_POPULATION,
         },
       });
 

+ 1 - 1
src/server/routes/apiv3/users.js

@@ -167,6 +167,7 @@ module.exports = (crowi) => {
     };
 
     try {
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
       const paginateResult = await User.paginate(
         {
           $and: [
@@ -182,7 +183,6 @@ module.exports = (crowi) => {
         },
         {
           sort: sortOutput,
-          populate: User.IMAGE_POPULATION,
           page,
           limit: PAGE_ITEMS,
         },

+ 2 - 1
src/server/routes/attachment.js

@@ -352,9 +352,10 @@ module.exports = function(crowi, app) {
       return res.json(ApiResponse.error('Parameters page_id is required.'));
     }
 
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     let attachments = await Attachment.find({ page: id })
       .sort({ updatedAt: 1 })
-      .populate({ path: 'creator', select: User.USER_PUBLIC_FIELDS, populate: User.IMAGE_POPULATION });
+      .populate({ path: 'creator', select: User.USER_PUBLIC_FIELDS });
 
     attachments = attachments.map((attachment) => {
       return attachment.toObject({ virtuals: true });

+ 2 - 1
src/server/routes/comment.js

@@ -127,8 +127,9 @@ module.exports = function(crowi, app) {
       return res.json(ApiResponse.error(err));
     }
 
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     const comments = await fetcher.populate(
-      { path: 'creator', select: User.USER_PUBLIC_FIELDS, populate: User.IMAGE_POPULATION },
+      { path: 'creator', select: User.USER_PUBLIC_FIELDS },
     );
 
     res.json(ApiResponse.success({ comments }));

+ 1 - 1
src/server/routes/page.js

@@ -265,8 +265,8 @@ module.exports = function(crowi, app) {
   }
 
   async function addRenderVarsForUserPage(renderVars, page, requestUser) {
+    // [TODO][user-profile-cache] change how to get profile image data in client side.
     const userData = await User.findUserByUsername(User.getUsernameByPath(page.path))
-      .populate(User.IMAGE_POPULATION);
 
     if (userData != null) {
       renderVars.pageUser = userData;

+ 2 - 1
src/server/routes/user.js

@@ -138,7 +138,8 @@ module.exports = function(crowi, app) {
 
     const data = {};
     try {
-      const users = await userFetcher.populate(User.IMAGE_POPULATION);
+      // [TODO][user-profile-cache] change how to get profile image data in client side.
+      const users = await userFetcher;
       data.users = users.map((user) => {
         // omit email
         if (user.isEmailPublished !== true) { // compare to 'true' because Crowi original data doesn't have 'isEmailPublished'

+ 2 - 1
src/server/service/passport.js

@@ -850,7 +850,8 @@ class PassportService {
     });
     passport.deserializeUser(async(id, done) => {
       try {
-        const user = await User.findById(id).populate(User.IMAGE_POPULATION);
+        // [TODO][user-profile-cache] change how to get profile image data in client side.
+        const user = await User.findById(id);
         if (user == null) {
           throw new Error('user not found');
         }