使用nodejs、mongodb、express、linux搭建社区网站(5)-用户登录及个人主页

这里,主要是用户登录及获取用户信息及其他页面及路由使用,在后台,只要明白了路由与视图及接口直接的关系,其他都一样的开发方式,这次通过登录及个人信息再次说一下。

首先是登录接口的开发,这儿没有对登录重新写页面登录,所以只是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官网查找相关文档。

在后面,将分享一些网络服务器搭建的一些过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以用于开发服务器端的应用程序。Express是Node.js的一个快速、灵活和极简的Web应用程序框架。MongoDB是一个面向文档的NoSQL数据库。它将数据存储在JSON样式的文档中,具有强大的灵活性和可扩展性。 在Node.js中使用MongoDB,可以使用node-mongodb-native驱动程序。首先需要安装MongoDB,并确保其服务正在运行。然后,可以使用Monk库来实现Node.js和MongoDB的交互[2]。使用Monk,你可以使用简单的JavaScript代码来连接到MongoDB数据库,执行查询和更新操作。 下面是一个使用Monk连接到MongoDB的示例代码: ``` var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/nodetest1'); ``` 在上述代码中,我们使用`monk`模块连接到本地的`nodetest1`数据库。 通过使用Node.js、ExpressMongoDB,你可以构建强大的Web应用程序,实现数据的存储和检索功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [NodeJS+Express+MongoDB](https://blog.csdn.net/weixin_33712881/article/details/85842769)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Node.js + Express + MongoDB教程](https://blog.csdn.net/boleban/article/details/39134661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值