質問編集履歴

3

userContorller.jsのコードを追加

2022/05/18 02:44

投稿

kazu2021
kazu2021

スコア48

test CHANGED
File without changes
test CHANGED
@@ -19,7 +19,24 @@
19
19
 
20
20
 
21
21
  ```userContorller.js
22
- ~略~
22
+ l~略~
23
+ .then(arraySearchResults => {
24
+ let arraySearchFilter = arraySearchResults.filter(searchResultsParam => {
25
+ return (searchResultsParam.statuses.length);
26
+ });
27
+ ** if(!arraySearchFilter.length){
28
+
29
+ return Promise.reject(new Error("検索結果がありません"));
30
+ }**
31
+
32
+ const sortArraySearchResults = arraySearchFilter.sort((a, b) => {
33
+ if (new Date(Date.parse(a.statuses[0].created_at)) < new Date(Date.parse(b.statuses[0].created_at))) return 1;
34
+ if (new Date(Date.parse(a.statuses[0].created_at)) > new Date(Date.parse(b.statuses[0].created_at))) return -1;
35
+ return 0
36
+ });
37
+ res.locals.arraySearchResults = sortArraySearchResults;
38
+ next();
39
+
23
40
  .catch(error => {
24
41
  req.flash("errorMessage",error.toString());
25
42
  req.flash("test", "テスト");
@@ -43,6 +60,7 @@
43
60
  このためにEJSでフラッシュメッセージが取得できていない感じなのですが・・・
44
61
  数十回に一回のタイミングでEJSにフラッシュメッセージが表示されうまくいきます。
45
62
  なぜ確率的にうまくいくのかわかりません。フラッシュメッセージに非同期通信が関連してるのでしょうか。
63
+ →userController.jsのPromise処理の中で検索結果が0だった場合にエラーのインスタンスをrejectしています。これをcatchするようにしてるのですがここの処理の構文が適切ではない気がします。調べてみます。
46
64
 
47
65
  main.jsでのconsole.log(res.locals.flashMessages)ログ
48
66
  { errorMessage: [ 'Error: 検索結果がありません' ], test: [ 'テスト' ] }

2

わかりやすいように見た目を少し修正

2022/05/18 02:03

投稿

kazu2021
kazu2021

スコア48

test CHANGED
File without changes
test CHANGED
@@ -44,7 +44,7 @@
44
44
  数十回に一回のタイミングでEJSにフラッシュメッセージが表示されうまくいきます。
45
45
  なぜ確率的にうまくいくのかわかりません。フラッシュメッセージに非同期通信が関連してるのでしょうか。
46
46
 
47
- main.jsでのconsole.logログ
47
+ main.jsでのconsole.log(res.locals.flashMessages)ログ
48
48
  { errorMessage: [ 'Error: 検索結果がありません' ], test: [ 'テスト' ] }
49
49
  { errorMessage: [ 'Error: 検索結果がありません' ], test: [ 'テスト' ] }
50
50
  { errorMessage: [ 'Error: 検索結果がありません' ], test: [ 'テスト' ] }

1

コードをルールに合わせました。

2022/05/18 01:59

投稿

kazu2021
kazu2021

スコア48

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- main.js
1
+ ```main.js
2
2
  app.use(expressSession({
3
3
  secret: "secret-passcode-tetsu",
4
4
  resave: false,
@@ -15,9 +15,10 @@
15
15
  ** console.log(res.locals.flashMessages);**  ここのログを添付
16
16
  next();
17
17
  });
18
+ ```
18
19
 
19
20
 
20
- userContorller.js
21
+ ```userContorller.js
21
22
  ~略~
22
23
  .catch(error => {
23
24
  req.flash("errorMessage",error.toString());
@@ -28,15 +29,20 @@
28
29
  searchIndex: (req, res) => {
29
30
  res.render("twitter/search");
30
31
  }
32
+ ```
31
33
 
32
- search.ejs
34
+ ```search.ejs
35
+
33
36
  <%= flashMessages.errorMessage %>
37
+ ```
34
38
 
35
-
39
+ 挙動がおかしくて
36
- res.locals.flashMessagesにメッセージは格納できているようなのですが動作がおかしくて
40
+ res.locals.flashMessagesにメッセージは格納できているようなのですが
37
41
  node.jsのmain.jsでres.locals.flashMessagesをconsole.logで表示すると
38
42
  プロンプトの最後に空のオブジェクトが表示されます。
39
43
  このためにEJSでフラッシュメッセージが取得できていない感じなのですが・・・
44
+ 数十回に一回のタイミングでEJSにフラッシュメッセージが表示されうまくいきます。
45
+ なぜ確率的にうまくいくのかわかりません。フラッシュメッセージに非同期通信が関連してるのでしょうか。
40
46
 
41
47
  main.jsでのconsole.logログ
42
48
  { errorMessage: [ 'Error: 検索結果がありません' ], test: [ 'テスト' ] }