最近尝试了一下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上。
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帮忙转换的。
以上就是这篇博客的所有内容了,有疑问欢迎交流。