客戶端鏈結到對應伺服器路由(user.art)
首先在使用者展示頁面新增鏈結(以email引數的有無來區分新增頁面和修改頁面)
}}<
/td>
}<
/td>
}<
/td>
}<
/td>
}<
/td>
"/admin/user-edit?email=}"
class
="glyphicon glyphicon-edit"
>
<
/a>
="glyphicon glyphicon-remove" data-toggle=
"modal" data-target=
".confirm-modal"
>
<
/i>
<
/td>
<
/tr>
}
伺服器端路由對應**(user-edit.js)通過有無客戶端傳遞的email引數來區分新增和修改功能,根據email值得唯一性找到資料庫唯一與之對應的使用者,渲染該使用者資料到模板顯示到使用者端
//匯入使用者模板
const
=require
('../../model/user');
//修改使用者路由
module.exports =
async
(req, res)
=>
= req.query;
if(email));
res.
render
('admin/user-edit',)
;}else);
}}
將資料渲染到user-edit模板(user-edit.art)
="title"
>
"display: }"
>
}<
/h4>
="tips"
>
}<
/p>
<
/div>
/分類標題 --
>
="form-container" action=
"}" method=
"post"
>
="form-group"
>
使用者名稱<
/label>
"username" type=
"text"
class
="form-control" placeholder=
"請輸入使用者名稱"
value=
"}">
<
/div>
="form-group"
>
郵箱<
/label>
"email"
class
="form-control" placeholder=
"請輸入郵箱位址" name=
"email"
value=
"}">
<
/div>
="form-group"
>
密碼<
/label>
"password"
class
="form-control" placeholder=
"請輸入密碼" name=
"password"
>
<
/div>
="form-group"
>
角色<
/label>
="form-control" name=
"role"
>
"normal"
}>普通使用者<
/option>
"admin"
}>超級管理員<
/option>
<
/select>
<
/div>
密碼驗證修改資料(user-modify.js)
const
=require
('../../model/user');
//引入bcryptjs進行密碼比對
const bcrypt =
require
('bcryptjs');
module.exports =
async
(req, res)
=>);
//用該物件密碼和使用者輸入密碼比對
const hash=user.password;
const isvalid = bcrypt.
comparesync
(req.body.password, hash);if
(isvalid),)
;//重定向頁面
res.
redirect
('/admin/user');
}else);
}}
注意
問題1:本來是打算用id來區分使用者修改和新增(通過跳轉相同頁面,get引數有無來區分新增和修改)
但是mongodb的id儲存為乙個物件 ,如下圖所示,當我用user.findone(_id:id(傳遞過來的id))進行判斷時,客戶端一直未響應(瀏覽器轉圈),而伺服器端也不報錯。猜測是由於資料沒有找到引起的
索性將傳遞的值變為email,結果可以輸入user,側面印證了猜測正確,可能是資料不能匹配上造成的
好在email唯一標識乙個使用者,我們之前也用驗證保證其唯一性,就用email來唯一確定要修改使用者
問題2:修改頁面和新增頁面用的同乙個模板頁面,當我們修改頁面時,傳進去user,但是新增則不會用到user。我們按如下寫法規定模板會報錯
解決方法:先判斷存在與否
部落格專案 分頁功能實現
伺服器路由 userpage.js 將page 客戶端以get方式傳遞的當前頁數 和total 伺服器從資料庫獲取並計算出的總頁數 資料引入模板 引入使用者模板 const require model user module.exports async req,res total存放使用者總頁數 l...
HDS修改使用者資訊
hds估計有快取機制,當資料庫修改了使用者的資訊後,在 8082 埠的使用者管理頁面可以看出來使用者的資訊並沒有改變。估計 hds本身有快取,然後通過 8082 埠修改了使用者資訊,會同時更新 hds資料庫和快取,並將修改資訊同步到 userdb 裡面。如果在後台 hds資料庫裡面改了使用者資訊,快...
usermod 修改使用者帳戶資訊
usermod options user name usermod 命令修改系統帳戶檔案來反映通過命令列指定的變化 選項 options c comment 修改 etc passwd檔案第五段comment d home 修改使用者的家目錄通常和 m選項一起使用 e expiredate 指定使用...