实例
- 连接数据库信息放到独立文件里
- 模型定义放到独立文件
- 在具体调用的文件里,使用模型定义
连接数据库
看一下实际代码,db/mini/connect.js
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://127.0.0.1:27017/db_helloworld");
db.connection.on("error", function (error) {
console.log("数据库连接失败:" + error);
});
db.connection.on("open", function () {
console.log("数据库连接成功");
});
一般项目里,所有模型都共用一个数据库连接信息,所以把连接数据库的代码抽取到connect.js
里,然后在对应的模型里会app入口引用即可。
模型定义
看一下实际模型定义代码,db/mini/user.js
var mongoose = require('mongoose');
// 定义Schema
UserSchema = new mongoose.Schema({
username: {// 真实姓名
type: String,
required: true
},
password: { // 密码
type: String,
required: true
}
});
// 定义Model
var UserModel = mongoose.model('User', UserSchema);
// 暴露接口
module.exports = UserModel;
这是MVC里Model层最长见的代码,没有连接信息,也没有其他额外不相干代码,当你看到user.js
你就能理解它在数据库里对应的表结构,以及字段的类型、约束等信息,一般来说,代码写的越干净,可读性会更好一些。
这里定义的User模型里只有 用户名
和 密码
2个字段,它们都必须有值的,也就是说当你创建用户的时候,没有密码或者没有用户名你是无法创建成功的。
测试代码
看一下实际代码db/mini/user.js
// 1、引入`mongoose connect`
require('./connect');
// 2、引入`User` Model
var User = require('./user');
// 3、定义`user` Entity
var user = new User({
username: 'i5ting',
password: '0123456789'
});
// 4、对数据库进行操作
user.save(function(err, doc){
if (err) {
console.log('save error:' + err);
}
console.log('save sucess \n' + doc);
})
核心步骤
- 引入数据库连接,保证mongodb已经连接成功
- 引入模型(model)定义文件,即文档(表)结构定义
- 实例化UserModel,创建user实体
- 最后通过user实体对数据库进行操作,完成用户注册功能。
这是项目里数据访问层的代码,它真实的对数据库进行操作,所以它一般会出现在controller
或service
层。
执行测试
$ node db/mini/test.js
数据库连接成功
save sucess
{ _id: 57341fc54d97ee0249082a1d,
password: '0123456789',
username: 'i5ting',
__v: 0 }