我正在开发一个简单的应用程序,其中主页列出了可能的酒店。您可以单击它,它会显示有关被点击酒店的更多信息。我正在使用Express和Ejs来实现此应用程序。
我所做的是,我创建了一个nav.ejs
,并且此导航包含以下链接:
但是,这些Offers
和Logout
链接仅在用户成功登录后才会显示,否则将被隐藏,并且Signin
也是如此。我在sign-in.js
路由中实现了以下步骤:
router.post('/', function(req, res) {
var username = req.body.username;
var password = req.body.password;
var exe = `SELECT id FROM users WHERE username = ? AND password = ?`;
dbConn.get(exe, [username, password], (err, rs) => {
if (err) {
console.log('Facing problem while finding users');
} else {
if (rs) {
req.session.isLoggedIn = true;
res.locals.isLoggedIn = true;
res.redirect('/');
} else {
req.flash('err', 'incorrect credintials.');
res.render('sign-in')
}
}
});
});
您可以在那看到,我正在创建一个会话,还将值也保存在本地。
req.session.isLoggedIn = true;
res.locals.isLoggedIn = true;
我在nav.ejs
文件中写过
<nav>
<a href="/">Home</a>
<% if (locals.isLoggedIn == true) { %>
<a href="/offers">Offers</a>
<a href="/logout">Logout</a>
<% } else { %>
<a href="/sign-in">Sign-in</a>
<% } %>
</nav>
答案 0 :(得分:0)
'
' 機能: DDL変換ボタンクリック時のイベント
'
' 返り値: なし
'
' 機能説明: 入力フォルダ内のフォルダおよびファイルを出力フォルダにすべてコピーする。
' コピーしたファイル内容をPostgreSQLの構文に変換する。
'
' 備考: 入力ファイルはOracleのDDLファイルのみ対応
'
Sub DDL変換_Click()
'// 入力フォルダパスを取得
Dim strIN_PATH As String
strIN_PATH = Range("C2").Value
strIN_PATH = strIN_PATH & "\"
strIN_PATH = Replace(strIN_PATH, "\\", "\", , , vbBinaryCompare)
' Debug.Print (strIN_PATH)
'// 出力フォルダパスを取得
Dim strOUT_PATH As String
strOUT_PATH = Range("C3").Value
strOUT_PATH = strOUT_PATH & "\"
strOUT_PATH = Replace(strOUT_PATH, "\\", "\", , , vbBinaryCompare)
' Debug.Print (strOUT_PATH)
'// 出力フォルダ内のフォルダをすべて削除
Dim objFSO As New FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFolder strOUT_PATH & "*"
'// 出力フォルダ内のファイルをすべて削除
Call objFSO.DeleteFile(strOUT_PATH & "*", True) ' 指定したパスのファイルを削除
'// 入力フォルダのファイルを出力フォルダへコピー
objFSO.GetFolder(strIN_PATH).Copy Replace(strOUT_PATH & "\", "\\", "", , , vbBinaryCompare)
'// ファイルオブジェクトを初期化
Set objFSO = Nothing
'// 出力フォルダのファイルをすべて変換
Call replaceFromFolder(strOUT_PATH)
'// 処理完了のメッセージを表示
MsgBox "入力ファイルのPostgreSQLへのDDL変換が完了しました。" & vbCrLf & "出力フォルダを確認してください。", vbOKOnly, "DDL変換"
End Sub
'
' 機能: 指定フォルダのファイルをすべてをPostgreSQLの構文に変換する。
'
' 返り値: なし
'
' 機能説明: 引数に指定したフォルダのファイルをすべてをPostgreSQLの構文に変換する。
'
' 備考: 例外処理などはなし
'
Sub replaceFromFolder(searchPath)
Dim FSO As New FileSystemObject
Dim objFiles As File
Dim objFolders As Folder
Dim separateNum As Long
'サブフォルダ取得
For Each objFolders In FSO.GetFolder(searchPath).SubFolders
Call replaceFromFolder(objFolders.Path)
Next
'ファイル名の取得
For Each objFiles In FSO.GetFolder(searchPath).Files
' separateNum = InStrRev(objFiles.Path, "\")
' 'セルにパスとファイル名を書き込む
' ActiveCell.Value = Left(objFiles.Path, separateNum - 1)
' ActiveCell.Offset(0, 1).Value = Right(objFiles.Path, Len(objFiles.Path) - separateNum)
' ActiveCell.Offset(0, 2).Value = FileDateTime(objFiles)
' ActiveCell.Offset(0, 3).Value = Format((FileLen(objFiles) / 1024), "#.0")
' ActiveCell.Offset(1, 0).Select
'// 対象ファイルをログに出力
Debug.Print (objFiles.Path)
'// ファイルを変換
Call replaceFromFile(objFiles.Path)
Next
End Sub
'
' 機能: 指定ファイルをPostgreSQLの構文に変換する。
'
' 返り値: なし
'
' 機能説明: 引数に指定したファイルをPostgreSQLの構文に変換する。
'
' 備考: 入力ファイルはOracleのDDLファイルのみ対応
'
Public Function replaceFromFile(FileName As String)
Dim FSO As FileSystemObject 'ファイルシステムオブジェクト
Dim Txt As TextStream 'テキストストリームオブジェクト
Dim buf_strTxt As String '読み込みバッファ
On Error GoTo Func_Err:
'オブジェクト作成
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Txt = FSO.OpenTextFile(FileName, ForReading)
'全文読み込み
buf_strTxt = Txt.ReadAll
Txt.Close
'元ファイルをリネームして、テンポラリファイル作成
Name FileName As FileName & "_"
'置換処理
buf_strTxt = Replace(buf_strTxt, "NUMBER", "NUMERIC", , , vbBinaryCompare)
buf_strTxt = Replace(buf_strTxt, "NVARCHAR2", "VARCHAR", , , vbBinaryCompare)
buf_strTxt = Replace(buf_strTxt, "VARCHAR2", "VARCHAR", , , vbBinaryCompare)
buf_strTxt = Replace(buf_strTxt, "CLOB", "TEXT", , , vbBinaryCompare)
buf_strTxt = Replace(buf_strTxt, "exit;", "", , , vbBinaryCompare)
'書込み用テキストファイル作成
Set Txt = FSO.CreateTextFile(FileName, True)
'書込み
Txt.Write buf_strTxt
Txt.Close
'テンポラリファイルを削除
FSO.DeleteFile FileName & "_"
'終了処理
Func_Exit:
Set Txt = Nothing
Set FSO = Nothing
Exit Function
Func_Err:
MsgBox "Error Number : " & Err.Number & vbCrLf & Err.Description
GoTo Func_Exit:
End Function
Function SJIS_to_UTF8(FN As String)
Dim FROM_OBJ As Object
Dim TO_OBJ As Object
Set FROM_OBJ = CreateObject("ADODB.Stream")
With FROM_OBJ
.Type = 2
.Charset = "shift-jis"
.Open
.LoadFromFile FN
.Position = 0
End With
Set TO_OBJ = CreateObject("ADODB.Stream")
With TO_OBJ
.Type = 2
.Charset = "utf-8"
.Open
End With
FROM_OBJ.CopyTo TO_OBJ
TO_OBJ.Position = 0
TO_OBJ.SaveToFile FN & "_utf.txt", 2
End Function
不会持续到下一条路线。 <span>{
data.map(
(item, index) => <button
alt={item.alt.toUpperCase()}
key={someKeyHere}>
{item.alt.toUpperCase()}
</button>)
}</span>
对象仅适用于此特定请求。仅res.locals
会保留给该用户将来的路由。在下一条路由中呼叫res
之前,您必须在下一条路由中重新分配req.session
。
所以,当您这样做时:
res.locals
res.render()
将响应发送到浏览器。现在,该请求已完成。
然后,浏览器处理重定向,并向服务器发出 req.session.isLoggedIn = true;
res.locals.isLoggedIn = true;
res.redirect('/');
路由的新请求。在浏览器处理重定向后,当新的res.redirect('/')
路由被命中时,您刚刚设置的/
的值就会消失。
因此,在要使用渲染的模板中的会话数据的所有路由中,请从res.locals
中读取数据,并为要渲染的模板设置/
。