|
@@ -293,21 +293,58 @@ module.exports = function(crowi) {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
pageSchema.methods.updateTags = async function(newTags) {
|
|
pageSchema.methods.updateTags = async function(newTags) {
|
|
|
- const setTagList = [newTags]; // [TODO] listing requested Tags on client side
|
|
|
|
|
const PageTagRelation = mongoose.model('PageTagRelation');
|
|
const PageTagRelation = mongoose.model('PageTagRelation');
|
|
|
|
|
+ const Tag = mongoose.model('Tag');
|
|
|
|
|
+
|
|
|
|
|
+ const newTagList = [newTags]; // [TODO] listing requested Tags on client side
|
|
|
|
|
+
|
|
|
|
|
+ // get tags relate this page
|
|
|
const relations = await PageTagRelation.find({relatedPage: this._id});
|
|
const relations = await PageTagRelation.find({relatedPage: this._id});
|
|
|
- console.log(relations);
|
|
|
|
|
- // Promise.all(relations.map(async relation => {
|
|
|
|
|
- // return await Tag.getOneById(relation.relatedTag); // tagId からタグ名を取得
|
|
|
|
|
- // })).then(tags => {
|
|
|
|
|
- // let relatedTagList = []; // relatedTagList -> stayTagList
|
|
|
|
|
- // tags.map(async relatedTag => {
|
|
|
|
|
- // if (!setTagList.includes(relatedTag.name)) { // 紐付け済みのタグが新タグになければそのリレーションを削除
|
|
|
|
|
- // await PageTagRelation.removeByEachId(page._id, relatedTag._id);
|
|
|
|
|
- // const pagesRelateTag = await PageTagRelation.findAllPageIdForTag(relatedTag);
|
|
|
|
|
- // if (pagesRelateTag.length == 0) { // 今リレーションを消したタグに紐づくページがなければタグ自体削除
|
|
|
|
|
- // Tag.removeById(relatedTag._id);
|
|
|
|
|
- // }
|
|
|
|
|
|
|
+ const relatedTagList = await Promise.all(relations.map(async function(relation) {
|
|
|
|
|
+ const relatedTag = await Tag.findOne({_id: relation.relatedTag}, 'name');
|
|
|
|
|
+ return relatedTag.name;
|
|
|
|
|
+ }));
|
|
|
|
|
+
|
|
|
|
|
+ // creat set tag list
|
|
|
|
|
+ const setTagList = [];
|
|
|
|
|
+ newTagList.map(async function(newTag) {
|
|
|
|
|
+ if (!relatedTagList.includes(newTag)) {
|
|
|
|
|
+ setTagList.push(newTag);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // creat unlinked tag list
|
|
|
|
|
+ const unlinkedTagList = [];
|
|
|
|
|
+ relatedTagList.map(async function(relatedTag) {
|
|
|
|
|
+ if (!newTagList.includes(relatedTag)) {
|
|
|
|
|
+ unlinkedTagList.push(relatedTag);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // if (newTagList.length > 0) {
|
|
|
|
|
+ // newTagList.map((newTag) => {
|
|
|
|
|
+ // if (newTag) {
|
|
|
|
|
+ // Tag.find({
|
|
|
|
|
+ // name: newTag
|
|
|
|
|
+ // }, async function (err, tag) {
|
|
|
|
|
+ // let settingTag;
|
|
|
|
|
+ // if (tag.length == 0) { // 初使用のタグの場合新規作成
|
|
|
|
|
+ // settingTag = await Tag.createTag(newTag);
|
|
|
|
|
+ // } else { // 他のページで使っているタグの場合それを利用
|
|
|
|
|
+ // settingTag = tag[0];
|
|
|
|
|
+ // }
|
|
|
|
|
+ // // make a relation
|
|
|
|
|
+ // PageTagRelation.createRelation(page, settingTag); // リレーションを作成
|
|
|
|
|
+ // });
|
|
|
|
|
+ // }
|
|
|
|
|
+ // });
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // await PageTagRelation.removeByEachId(page._id, relatedTag._id);
|
|
|
|
|
+ // const pagesRelateTag = await PageTagRelation.findAllPageIdForTag(relatedTag);
|
|
|
|
|
+ // if (pagesRelateTag.length == 0) { // 今リレーションを消したタグに紐づくページがなければタグ自体削除
|
|
|
|
|
+ // Tag.removeById(relatedTag._id);
|
|
|
|
|
+ // }
|
|
|
// } else {
|
|
// } else {
|
|
|
// relatedTagList.push(relatedTag.name); // 紐付け済みのタグが新タグにも含まれていれば 維持リストに追加
|
|
// relatedTagList.push(relatedTag.name); // 紐付け済みのタグが新タグにも含まれていれば 維持リストに追加
|
|
|
// }
|
|
// }
|
|
@@ -317,24 +354,7 @@ module.exports = function(crowi) {
|
|
|
// return setTag;
|
|
// return setTag;
|
|
|
// }
|
|
// }
|
|
|
// });
|
|
// });
|
|
|
- // if (newTagList.length > 0) {
|
|
|
|
|
- // newTagList.map((newTag) => {
|
|
|
|
|
- // if (newTag) {
|
|
|
|
|
- // Tag.find({
|
|
|
|
|
- // name: newTag
|
|
|
|
|
- // }, async function (err, tag) {
|
|
|
|
|
- // let settingTag;
|
|
|
|
|
- // if (tag.length == 0) { // 初使用のタグの場合新規作成
|
|
|
|
|
- // settingTag = await Tag.createTag(newTag);
|
|
|
|
|
- // } else { // 他のページで使っているタグの場合それを利用
|
|
|
|
|
- // settingTag = tag[0];
|
|
|
|
|
- // }
|
|
|
|
|
- // // make a relation
|
|
|
|
|
- // PageTagRelation.createRelation(page, settingTag); // リレーションを作成
|
|
|
|
|
- // });
|
|
|
|
|
- // }
|
|
|
|
|
- // });
|
|
|
|
|
- // }
|
|
|
|
|
|
|
+
|
|
|
// });
|
|
// });
|
|
|
};
|
|
};
|
|
|
|
|
|