NodeJS - 使用Mongoose进行Mongodb数据库连接

最近尝试了一下Node的代码,过程中用到了数据库,现在总结一下并分享出来。

对于Mongodb的安装,大家可以参考下这篇博客,保证良心,对了,是windows系统的。

对于Node层次的代码,使用的KOA框架,参考的廖雪峰大神的示例,很赞。


1. 安装,这里用到的管理工具是yarn.

yarn install

2.连接数据库

const mongoose = require('mongoose');

try{
    mongoose.connect('mongodb://localhost/test',{
        useMongoClient:true
    })
}catch(error){
    console.log(err)
}

mongoose.connection.once("open",function(){
    console.log('数据库连接成功');
}).on('error',function(err){
    throw err
})

这里做一下解释,test是本地创建的一个数据库,连接之后可以直接进行操作,未成功连接则直接抛出错误。

使用useMongoClient:true 可以避免Mongoose报出警告,还有一些其他的选项可以自己添加,可以参考这里

3.创建数据库表并连接

首先新建一个在最外层结构新建一个models文件夹,然后文件夹中新建login.js文件。

module.exports = function (mongoose) {
    var schema = mongoose.Schema({
        userName: {
            type: String,   //指定字段类型
            required:true,  //判断数据是否必须(如果存在一条数据)
            unique:true   //是否为不可重复
        },
        pass:{
            type:String
        }
    });
    return mongoose.model('User', schema);   //第一个变量是数据库表名,第二个是使用的模板
}

对于上面的type,required等约束字符,想实现更多复杂功能可以了解这里

然后在文件夹中新建index.js文件。

module.exports = function (instance) {
    return {
        User: require('./login')(instance)
    }
}

按照规律可以新建更多的模型文件,统一通过index.js导出

最后,要在app中把导出的model添加到ctx上。

扫描二维码关注公众号,回复: 1462574 查看本文章
mongoose.connection
    .once("open",function(){
        console.log('mongoose connection')
        const models = require('./models')(mongoose)   //引入模型
        app.use(async (ctx,next) => {    
            ctx.models = models;  //将模型的信息放到ctx中。
            await next();
        })
    })
    .on('error',function(error){
        throw error
    })

这样之后就可以在项目中通过ctx直接调用数据库的访问操作了。

4.访问网络进行数据库操作

在一个负责处理signin的controller里面(不清楚的可以参照上述廖雪峰的网站),其实只要是个可以处理post请求的原生操作也可以,这里不细说。

'POST /zhuce': async (ctx, next) => {
        var userName = ctx.request.body.userName || '';   //获取post的参数
        var pass = ctx.request.body.pass || '';
        console.log(ctx.request)
        var user = new ctx.models.User({      //根据scheme生成对象
            userName:userName,
            pass:pass
        })
        user.save((err,rst) => {     //调用mongoose方法实现保存操作。
            if (err) {     //打印错误信息
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + rst);
            }
        })
    },

由于是后台的处理操作,所以这里就不涉及前端知识了,直接用Postman来测试。我使用的端口为8080.



这样就可以注册成功了,由于名字设定的是unique,所以注意名字不要重复。

5.验证操作是否成功

这里有一点要注意一下,我们给数据库起得名字叫做User,但是数据库中生成的数据库名称为users,这应该是mongoose帮忙转换的。


以上就是这篇博客的所有内容了,有疑问欢迎交流。

猜你喜欢

转载自blog.csdn.net/Run_youngman/article/details/80569256