这里,主要是用户登录及获取用户信息及其他页面及路由使用,在后台,只要明白了路由与视图及接口直接的关系,其他都一样的开发方式,这次通过登录及个人信息再次说一下。
首先是登录接口的开发,这儿没有对登录重新写页面登录,所以只是post请求方法,在controllers/user.coffee中添加如下代码:
### 登录 @param email @param password ### exports.login_POST = (req, res) -> user = email : req.body.userName password : req.body.pwd userBll.login user, (err, result)-> if err res.send code: 1 message: err.message else if !result res.send code: 1 message: '用户不存在,请注册后登录' else setSession(req, result) res.send code: 0 message: 'ok' result: result
当post请求 /user/login的时候,将进入此接口,获取传过来的用户名及密码,再调用userBll中登录方法,在 /Bll/userBll.coffee中有以下代码
### 登录 ### exports.login = (user, cb) -> dbUser.login user, cb
它抛出了一个login接口,所以在上面controller中可以使用userBll.login,传入user对象,而在这儿,又调用了 /Dal/dbUser中抛出的login接口,此用于与mongodb数据库进行交换,来查找验证是否存在用户信息并登录,代码如下:
### 登录 ### exports.login = (user, cb) -> dbHelper.connectDB "userInfo", cb, (collection) -> collection.findOne user, (err, doc)-> mongodb.close() if err cb new Error("登录失败") else cb null, doc
在这里,抛出一个登录接口,需要一个user对象,通过连接数据库中userInfo表,再通过findOne方法进行查找验证用户信息。再通过从最上面,及controller中传过来的回调函数cb进行成功或者失败后的操作,主要是如果出错,则返回错误,如果成功,则返回成功,且写入session保持用户信息。
同样,获取用户信息接口,也是通过前端发送post请求,传入用户Id,通过controller、Bll、Dal中user相应接口,最后从数据库中获取数据,并通过回调函数cb返回,如下:
/controllers/user.coffee中添加:
### 获取用户信息 ### exports.getUserInfo = (req, res) -> userId = req.query.id || req.session.userId userBll.getUserInfo userId, (err, user) -> if err res.send code: 1 message: err.message else res.send code: 0 message: "ok" user: user
/Bll/userBll.coffee中添加:
### 获取用户信息 ### exports.getUserInfo = (id, cb) -> dbUser.getUserInfo id, cb
/Dal/dbUser.coffee中添加:
#
获取用户信息
#
exports.getUserInfo = (id, cb) ->
dbHelper.connectDB “userInfo”, cb, (collection) ->
collection.findOne { _id: ObjectId(id)},(err, user) ->
mongodb.close()
if err
cb new Error(err)
else
cb null, user
也是使用findOne方法查询,使用id查询用户信息,并通过回调cb返回查询结果;
所有在后面的后台接口、页面开发都是通过此方法,如果对于mongodb使用不熟悉的,可以参考MongoDB命令及SQL语法对比,也可查看mongodb官网查找相关文档。
在后面,将分享一些网络服务器搭建的一些过程。