猿记录

一个记录、分享的博客

您的位置:主页 > 技术专栏 > node >

nodeJs中mongodb的简单使用

2017-12-04 16:14:33 作者:yxl 次阅读 node

使用koa2框架,基于注册登录功能简单的介绍了mongodb的使用
一、首先我们先看下目录结构
      目录结构
     1、在mongo目录下有个app.js文件(入口文件)
     2、然后views是模板文件目录
     3、package.json 这个就不必多说了大家都了解
二、在node中使用mongodb,首先要先安装好nodejs和mongodb,window下启动mongodb可能会遇到一些问题,可以参考:启动mongodb遇到的一些问题三、然后安装各种必须的依赖,下面是app.js的代码,注释已经详细(因为是练习,所以都放在一个文件下),全部代码参考github:代码
//使用koa2
const Koa = require('koa');
//路径处理
var path = require('path');
//接收请求的数据处理
const bodyParser = require('koa-bodyparser');
//路由处理
const Router = require('koa-router');
//加载模板
var views = require('koa-views')

//使用之后就可以直接使用了
const app = new Koa();
const router = new Router();

//配置mongodb数据库相关的内容
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mongo');

//创建模型
var User = mongoose.model('User',{username:String,password:String});

// 配置服务端模板渲染引擎中间件 使用ejs模板
app.use(views(path.join(__dirname, './views'), {
   map: { html:'ejs' }
}))

//数据处理模块
app.use(bodyParser())

//首页
router.get('/',async (ctx,next)=>{
        ctx.body = 'hello'
})
// '/login' get请求去到login页面
router.get('/login',async (ctx,next)=>{
    await ctx.render('login')
})
//注册页
router.get('/register',async (ctx,next)=>{
        await ctx.render('register')
})

//注册传过来的数据
router.post('/register',async (ctx,next)=>{
                const{username,password} = ctx.request.body
                //添加数据
                if(!username || password){
                          ctx.body = {
                            code:1,
                            msg:'用户名或者密码不能为空'
                    }
                }
                var user = new User({ username: username, password:password });
                await user.save(function(err, res) {
                    // 如果错误,打印错误信息
                    if (err){
                            ctx.body = {
                                    code:1,
                                    msg:'err'
                            }
                    }
                    
                    ctx.body = {
                            code:2,
                            msg:'ok'
                    }
                    
                })
})
//数据查询
router.post('/login',async (ctx,next)=>{
        const{username,password} = ctx.request.body
        User.
                  find({ username: username }).
                  where('password').equals(password).
                  exec((err,res)=>{
                          if(err){
                                  console.log(err);
                          }else{
                                  if(res){
                                          ctx.body = {
                                                  code:2,
                                                  data:{
                                                          username:res[0].username
                                                  },
                                                  msg:'ok'
                                          }
                                  }else{
                                          ctx.body = {
                                                  code:1,
                                                  msg:'err'
                                          }
                                  }
                          }
                  });    

})

//要使用router.routes() 路由才会有效果
app.use(router.routes())
app.listen(3000)

凡本站注明“本站”或“投稿”的所有文章,版权均属于本站或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。

编辑:yxl 关键词: mongodb node
0

网友评论