質問編集履歴
3
userContorller.jsのコードを追加
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
わかりやすいように見た目を少し修正
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
コードをルールに合わせました。
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: [ 'テスト' ] }
|