nodeJs中mongodb的简单使用

原创 construct 教程 nodejs 309阅读 2017-12-04 16:11:06 举报

使用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
await 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)
博客地址

评论 ( 5 )
最新评论
人马在冬至追风 2018-06-13 10:24:19 5F

可视化如何操作?

rudy 3F 2017-12-09 14:04:22 4F

是的,加上await就好了

construct 1F 2017-12-08 09:24:32 3F

您的/login 接口是 await 写了吗?

rudy 2017-12-07 23:05:52 2F

await User.
find({ username: username }).
where('password').equals(password).
改成这样就可以了

rudy 2017-12-07 22:19:47 1F

已经注册之后,/login 页面登录的时候接口一直404 ,是什么原因啊?