|
@@ -111,29 +111,52 @@ module.exports = function(crowi, app) {
|
|
|
// if (pageTags == null) {
|
|
// if (pageTags == null) {
|
|
|
// Tag.removeTagById(tag.id);
|
|
// Tag.removeTagById(tag.id);
|
|
|
// }
|
|
// }
|
|
|
- const tagList = [newTags];
|
|
|
|
|
|
|
+ const tagList = [newTags]; // クライアント側でリスト化後、消去予定
|
|
|
const relations = await PageTagRelation.findAllTagForPage(page);
|
|
const relations = await PageTagRelation.findAllTagForPage(page);
|
|
|
|
|
+
|
|
|
|
|
+ let newTagList;
|
|
|
|
|
+ if (relations) {
|
|
|
|
|
+ console.log(relations);
|
|
|
|
|
+ newTagList = await shaveTagList(relations, tagList);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (newTagList) {
|
|
|
|
|
+ newTagList.map((newTag) => {
|
|
|
|
|
+ Tag.find({name: newTag}, async function(err, tag) {
|
|
|
|
|
+ let settingTag;
|
|
|
|
|
+ if (tag.length == 0) {
|
|
|
|
|
+ settingTag = await Tag.createTag(newTag);
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ settingTag = tag[0];
|
|
|
|
|
+ }
|
|
|
|
|
+ // Relation を作成
|
|
|
|
|
+ PageTagRelation.createRelation(page, settingTag);
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 既存のタグを新規タグリストから削除、および外されるタグの削除
|
|
|
|
|
+ async function shaveTagList(relations, tagList) {
|
|
|
relations.map((relation) => {
|
|
relations.map((relation) => {
|
|
|
const tagId = relation.relatedTag;
|
|
const tagId = relation.relatedTag;
|
|
|
Tag.findById(tagId, async function(err, tag) {
|
|
Tag.findById(tagId, async function(err, tag) {
|
|
|
if (tagList.indexOf(tag.name) >= 0) {
|
|
if (tagList.indexOf(tag.name) >= 0) {
|
|
|
- tagList.filter(relatedTag => relatedTag !== tag.name);
|
|
|
|
|
|
|
+ tagList = await tagListFilter(tagList, tag.name);
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
PageTagRelation.removeByTagId(tag._id);
|
|
PageTagRelation.removeByTagId(tag._id);
|
|
|
// 不要なタグ削除も走らせる
|
|
// 不要なタグ削除も走らせる
|
|
|
}
|
|
}
|
|
|
- // Tag.findById(tagId, async function(err, tag) {
|
|
|
|
|
- // let matchedTag;
|
|
|
|
|
- // if (tag.length == 0) {
|
|
|
|
|
- // settingTag = await Tag.createTag(pageTags);
|
|
|
|
|
- // }
|
|
|
|
|
- // else {
|
|
|
|
|
- // settingTag = tag[0];
|
|
|
|
|
- // }
|
|
|
|
|
- // // Relation を作成
|
|
|
|
|
- // PageTagRelation.createRelation(page, settingTag);
|
|
|
|
|
});
|
|
});
|
|
|
|
|
+ console.log(tagList);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // array.filter promise wrapper
|
|
|
|
|
+ function tagListFilter(list, tag) {
|
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
|
+ resolve(list.filter(relatedTag => relatedTag !== tag));
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|