Use old data in nodejs
Em mới tìm hiểu Nodejs ạ.
Hôm nay, mọi người giúp đỡ e một chút về câu hỏi sau ạ:
E đang làm chức năng đăng ký tài khoản cho website. Validator các kiểu e làm hết rồi ạ. Nhưng còn thiếu 2 điều sau ạ..
E vẫn chưa hiểu làm sao để check xem thử 1 tài khoản đã tồn tại trong database (sử dụng mongodb
) như thế nào ạ?
Và làm thế nào khi gặp lỗi lúc register thì trả về lại trang đăng ký và vẫn giữ nguyên các data lúc người dùng nhập trước đó ạ...
Bên laravel thì có {{ old(filed) }}
nhưng bên nodejs e chưa rõ ạ.
E xin cám ơn a/c
1 CÂU TRẢ LỜI
E vẫn chưa hiểu làm sao để check xem thử 1 tài khoản đã tồn tại trong database (sử dụng mongodb) như thế nào ạ?
Cái này thì bạn truy vấn trong db xem có thông tin đăng ký đấy chưa, tìm theo email hoặc số điện thoại gì đó ý, nếu có kết quả truy vấn thì user đã tồn tại, nếu không có kết quả nào thì cho đăng ký tiếp. Kiểu thế này này:
User.find({ email : req.body.email }).count()
.exec((error, result) => {
// xử lý trường hợp kết quả query có hay không có user....
});
Hoặc bạn có thể dùng passportjs thì sẽ tiện hơn đó.
Và làm thế nào khi gặp lỗi lúc register thì trả về lại trang đăng ký ... Bên laravel thì có {{ old(filed) }}
Laravel là framework hết sức đồ sộ. Express giản tiện hơn Laravel nhiều, nên có nhiều thứ laravel có mà express không có đâu...
Mình dùng Nodejs làm API thôi. Nên việc xử lý với view engine (chắc bạn dùng ejs nhỉ ? ) mình cũng không rành lắm, nhưng mình nhớ là không có đâu. Cách đơn giản nhất là, khi người dùng gửi request kèm thông tin đăng ký/ đăng nhập lên , bạn validate dữ liệu. Nếu thông tin sai, thì đơn giản là trả ngược lại khối data vừa gửi lên đó ra view để render lại (đổ chúng vào các input field tương ứng hồi nãy) là được ấy.
router.get('/user/register', (req, res) => {
// Validate dữ liệu, nếu ok hết thì xử lý tiếp, lưu vào db hay gì đó
// Nếu sai
res.render('./user/pages/register', {
registerData : {
username: req.body.username,
phone: req.body.phone,
......
}
});
});
Hoặc bạn có thể dùng ajax đừng load lại cả trang nữa, hoặc package này có vẻ cũng được này old-input
E biết cách làm này ạ... Nhưng khi e gửi sang như thế, trong input như sau ạL
<input type="text" name="email" class="form-control" value="<%= form.email %>">
Thì bị báo lỗi ạ, lỗi cái: Cannot read property 'email' of null
, mặc dù e có khai báo res.locals
rồi ạ.
Mong a khắc phục giúp e.
@minhtuancnttk39 Bạn check xem nó có giá trị không đã rồi hẵng đổ ra ý
<input type="text" name="email" class="form-control" value="<%= (typeof form !== 'undefined' ) ? form.email : ' ' %>"/>